+ (%source-name '.anonymous.)
+ (where-from :defined)
+ (type (specifier-type 'function))))
+ ;; (For public access to this slot, use LEAF-DEBUG-NAME.)
+ ;;
+ ;; the name of FUNCTIONAL for debugging purposes, or NIL if we
+ ;; should just let the SOURCE-NAME fall through
+ ;;
+ ;; Unlike the SOURCE-NAME slot, this slot's value should never
+ ;; affect ordinary code behavior, only debugging/diagnostic behavior.
+ ;;
+ ;; Ha. Ah, the starry-eyed idealism of the writer of the above
+ ;; paragraph. FUNCTION-LAMBDA-EXPRESSION's behaviour, as of
+ ;; sbcl-0.7.11.x, differs if the name of the a function is a string
+ ;; or not, as if it is a valid function name then it can look for an
+ ;; inline expansion.
+ ;;
+ ;; E.g. for the function which implements (DEFUN FOO ...), we could
+ ;; have
+ ;; %SOURCE-NAME=FOO
+ ;; %DEBUG-NAME=NIL
+ ;; for the function which implements the top level form
+ ;; (IN-PACKAGE :FOO) we could have
+ ;; %SOURCE-NAME=NIL
+ ;; %DEBUG-NAME=(TOP-LEVEL-FORM (IN-PACKAGE :FOO)
+ ;; for the function which implements FOO in
+ ;; (DEFUN BAR (...) (FLET ((FOO (...) ...)) ...))
+ ;; we could have
+ ;; %SOURCE-NAME=FOO
+ ;; %DEBUG-NAME=(FLET FOO)
+ ;; and for the function which implements FOO in
+ ;; (DEFMACRO FOO (...) ...)
+ ;; we could have
+ ;; %SOURCE-NAME=FOO (or maybe .ANONYMOUS.?)
+ ;; %DEBUG-NAME=(MACRO-FUNCTION FOO)
+ (%debug-name nil
+ :type (or null (not (satisfies legal-fun-name-p)))
+ :read-only t)
+ ;; some information about how this function is used. These values
+ ;; are meaningful: