Clozure / ccl

Clozure Common Lisp
http://ccl.clozure.com
Apache License 2.0
841 stars 105 forks source link

find-definition-sources can't find internal callers #450

Closed svspire closed 2 months ago

svspire commented 11 months ago

In the IDE, if you do "Show Callers" (C-M-c), it will show a dialog box of callers of whatever function name the cursor is on. If one of those callers is :INTERNAL (i.e. a definition inside a labels, flet, or an anonymous lambda), double-clicking on that item will throw an error.

Test procedure: Open CCL in the IDE.

[note: it might be necessary to set up the following variables before rebuilding CCL. I typically have all these set to T:

(setf ccl::*fasl-save-definitions* t
        ccl::*fasl-save-doc-strings* t
        ccl::*fasl-save-local-symbols* t
        ccl::*save-definitions* t
        ccl::*save-doc-strings* t
        ccl::*save-local-symbols* t
        ccl::*save-source-locations* t)

]

In the listener, type find-definition-sources. [Ironically this is the function I'm patching, but it's a perfect illustration of the problem.]

Put the cursor somewhere on the word find-definition-sources and hit C-M-c.

This should produce a dialog box with 3 elements, the first of which is (:INTERNAL HEMLOCK::GET-SOURCE-ALIST HEMLOCK:EDIT-DEFINITION)

Double-click on that line.

This will throw an error in the listener:

> Error: No known definitions for (:INTERNAL HEMLOCK::GET-SOURCE-ALIST HEMLOCK:EDIT-DEFINITION)
> While executing: CCL::TOPLEVEL-EVAL, in process Listener(4).
> Type cmd-. to abort, cmd-\ for a list of available restarts.
> Type :? for other options.