Yes, but that doesn't solve the problem. Assume I have a defsystem that is in package FOO.
Now I DEFSYSTEM-DEPEND-ON some ASDF extension. This extension is implemented in its own namespace, as it should be to avoid namespace collision, ASDF-EXT. Now what? I can't get its exported symbols into package FOO, which has already been created by the defpackage form at the top of my .asd file. I SHOULDN'T jam those exported symbols into the ASDF package, because that's namespace pollution, and I can't protect against naming conflicts.
So the strings don't help, unless you mean that I can arbitrarily put package prefixes into them.
That would help, but now we have to guess every place the programmer might want to stick a string instead of a symbol (inside a :METHOD)? At this point you really have to have a code-walker that looks for strings everywhere, and knows where a string is a string -- for example when it's a pathname or the name of a component -- and not a thing that should be interpreted as a lazily-referenced symbol.
Once you have gone that far, you might as well give up using READ to process the DEFSYSTEM forms and just write your own parser.
Or toss DEFSYSTEM-DEPENDS-ON into the ashheap of history and just put ASDF:LOAD-SYSTEM forms in your .asd files....
Yes, but that doesn't solve the problem. Assume I have a defsystem that is in package FOO.
Now I DEFSYSTEM-DEPEND-ON some ASDF extension. This extension is implemented in its own namespace, as it should be to avoid namespace collision, ASDF-EXT. Now what? I can't get its exported symbols into package FOO, which has already been created by the defpackage form at the top of my .asd file. I SHOULDN'T jam those exported symbols into the ASDF package, because that's namespace pollution, and I can't protect against naming conflicts.
So the strings don't help, unless you mean that I can arbitrarily put package prefixes into them.
That would help, but now we have to guess every place the programmer might want to stick a string instead of a symbol (inside a :METHOD)? At this point you really have to have a code-walker that looks for strings everywhere, and knows where a string is a string -- for example when it's a pathname or the name of a component -- and not a thing that should be interpreted as a lazily-referenced symbol.
Once you have gone that far, you might as well give up using READ to process the DEFSYSTEM forms and just write your own parser.
Or toss DEFSYSTEM- DEPENDS- ON into the ashheap of history and just put ASDF:LOAD-SYSTEM forms in your .asd files....