Hello SLIME developers,
When slime-list-callees is attempted on symbol naming a macro, swank-sbcl implementation (based on SB-INTROSPECT) generates the following condition:
The value of sb-introspect::code is #<unknown pointer object, widetag=#x5D {1003543DFF}>, which is not of type sb-kernel:code-component.
Though (FDEFINITION)'s value for macros in SBCL _is_ FUNCTIONP, it's apparently a wrong kind of function for SB-INTROSPECT.
After redefining LIST-CALLEES to use symbol's MACRO-FUNCTION in preference to FDEFINITION, I've got a desired behavior (listing callees of macrofunction seems to be a reasonable reaction, and that's what I want, anyway). Just in case someone finds it useful -- patch is attached.
One more thing that I found convenient is redirecting LIST-CALLERS for symbols with macro-functions to WHO-MACROEXPANDS (also included in the patch).
In article 87aaoajsux.fsf@desktop-ng.home.sw4me.com, Anton Kovalenko anton@sw4me.com wrote:
Hello SLIME developers,
When slime-list-callees is attempted on symbol naming a macro, swank-sbcl implementation (based on SB-INTROSPECT) generates the following condition:
The value of sb-introspect::code is #<unknown pointer object, widetag=#x5D {1003543DFF}>, which is not of type sb-kernel:code-component.
This sounds like a bug in SBCL. Please submit that to its bug tracker.
Though (FDEFINITION)'s value for macros in SBCL _is_ FUNCTIONP, it's apparently a wrong kind of function for SB-INTROSPECT.
After redefining LIST-CALLEES to use symbol's MACRO-FUNCTION in preference to FDEFINITION, I've got a desired behavior (listing callees of macrofunction seems to be a reasonable reaction, and that's what I want, anyway). Just in case someone finds it useful -- patch is attached.
One more thing that I found convenient is redirecting LIST-CALLERS for symbols with macro-functions to WHO-MACROEXPANDS (also included in the patch).
List-Callers and Who-Foo are seperate functions bound to different keys because they're based on totally different lookup mechanism (at least that's my post-hoc reckoning.) I don't think it's a good idea starting to intermix their functionality.
-T.