The approach with (eq (info :variable :kind name) :constant) resolves the issue perfectly, and the above original examples (with symbol-macrolet etc.) work fine, while constants (including user-defined) are reported to be the wrong slots names. The only problem is that I have seen a test failure while testing the patched system:
Invalid exit status: package-locks.impure.lisp.
As for now, I cannot say what is wrong there, this problem needs some additional investigation.
The approach with (eq (info :variable :kind name) :constant) resolves the issue perfectly, and the above original examples (with symbol-macrolet etc.) work fine, while constants (including user-defined) are reported to be the wrong slots names. The only problem is that I have seen a test failure while testing the patched system:
Invalid exit status: package- locks.impure. lisp.
As for now, I cannot say what is wrong there, this problem needs some additional investigation.