Enforce or verify that *.asd files are "pure"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ASDF |
Confirmed
|
Wishlist
|
Unassigned |
Bug Description
My suggestion is a gradual move towards enforcing that *.asd files become mere descriptions of the system and that side effects needed for building and loading are listed in the system itself.
- System definitions should be read and recorded by ASDF in pure form, that is as S expressions, with a hash that maps system names to s-expressions.
- Instead of using LOAD we use a LOOP and READ. If a form which is not a DEFSYSTEM is found, we have two options: if we enforce strict mode, an error is signaled, otherwise the form is evaluated after emitting a warning.
- Warnings could also be emitted when a DEFSYSTEM clause does not match the name of the file, or when more than one such clauses is found.
- The system definition should be scanned for a class name and for a keyword option, :asdf-support If the :asdf-support option is found, it should name a file with side effects that are needed for the ASDF definition to be used. The file should be loaded using LOAD.
- The original S expression is now parsed and the system definition is created.
The warning could be really self-explanatory, stating the following:
- Dependencies that are needed for processing the system definition must be listed in :asdf-support
- Dependencies that are needed for load/compile-op should be listed in :depends-on
Changed in asdf: | |
milestone: | none → version3 |
I pushed this to "Wishlist" for importance; figure we can put there a bunch of things we'd like to see sometime.