Do IF-FEATURE dependencies correctly get updated over feature changes?
A discussion on ASDF-devel suggested this as something to worry about.
Here is the case:
- We compile a system with a feature present, triggering compilation of a file with an
:if-feature
dependency. This file changes the state of the packages, a change that will affect the code in downstream files. - We recompile with the feature present in a way that does not change the filesystem. ASDF has no way of knowing that the relevant feature has been removed after the compilation of the dependent file, and this causes FASL loading of the dependent file to fail. This happens because the fasl of the dependent file has captured a state dependency, and ASDF does not know that it needs recompilation.
I have attempted to create a test for this issue: !209
This test appears to confirm the above conjecture, but what I had to do in the test code was so sketchy that I am not confident.
Edited by Robert Goldman