Ignore:
Timestamp:
Jul 26, 2009, 1:24:19 PM (10 years ago)
Author:
gz
Message:

Some changes in support of Slime:

Implement CCL:COMPUTE-APPLICABLE-METHODS-USING-CLASSES

Add a :stream-args argument to CCL:ACCEPT-CONNECTION, for one-time initargs for the stream being created. E.g. (accept-connection listener :stream-args `(:external-format ,external-format-for-this-connection-only))

Add CCL:TEMP-PATHNAME

Bind new var CCL:*TOP-ERROR-FRAME* to the error frame in break loops, to make it available to debugger/break hooks.

Add CCL:*SELECT-INTERACTIVE-PROCESS-HOOK* and call it to select the process to use for handling SIGINT.

Add CCL:*MERGE-COMPILER-WARNINGS* to control whether warnings with the same format string and args but different source locations should be merged.

Export CCL:COMPILER-WARNING, CCL:STYLE-WARNING, CCL:COMPILER-WARNING-FUNCTION-NAME and CCL:COMPILER-WARNING-SOURCE-NOTE.

Create a CCL:COMPILER-WARNING-SOURCE-NOTE even if not otherwise saving source locations, just using the fasl file and toplevel stream position, but taking into account compile-file-original-truename and compiler-file-original-buffer-offset. Get rid of stream-position and file-name slots in compiler warnings.

Export CCL:REPORT-COMPILER-WARNING, and make it accept a :SHORT keyword arg to skip the textual representation of the warning location.

Export CCL:NAME-OF, and make it return the fully qualified name for methods, return object for eql-specializer

Make CCL:FIND-DEFINITION-SOURCES handle xref-entries.

Export CCL:SETF-FUNCTION-SPEC-NAME, make it explicitly ignore the long-form setf method case.

Export the basic inspector API from the inspector package.

Export EQL-SPECIALIZER and SLOT-DEFINITION-DOCUMENTATION from OPENMCL-MOP

Refactor things a bit in backtrace code, define and export an API for examining backtraces:

CCL:MAP-CALL-FRAMES
CCL:FRAME-FUNCTION
CCL:FRAME-SUPPLIED-ARGUMENTS
CCL:FRAME-NAMED-VARIABLES

other misc new exports:

CCL:DEFINITION-TYPE
CCL;CALLER-FUNCTIONS
CCL:SLOT-DEFINITION-DOCUMENTATION
CCL:*SAVE-ARGLIST-INFO*
CCL:NATIVE-TRANSLATED-NAMESTRING
CCL:NATIVE-TO-PATHNAME
CCL:HASH-TABLE-WEAK-P
CCL;PROCESS-SERIAL-NUMBER
CCL:PROCESS-EXHAUSTED-P
CCL:APPLY-IN-FRAME

Other misc tweaks:

Make cbreak-loop use the break message when given a uselessly empty condition.

Use setf-function-name-p more consistently

Make find-applicable-methods handle eql specializers better.

Try to more consistently recognize lists of the form (:method ...) as method names.

Add xref-entry-full-name (which wasn't needed in the end)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lib/xref.lisp

    r12327 r12463  
    2323            XREF-ENTRY-NAME
    2424            XREF-ENTRY-TYPE
     25            XREF-ENTRY-FULL-NAME
    2526            XREF-ENTRY-METHOD-QUALIFIERS
    2627            XREF-ENTRY-METHOD-SPECIALIZERS
     
    5152                "XREF-ENTRY-NAME"
    5253                "XREF-ENTRY-TYPE"
     54                "XREF-ENTRY-FULL-NAME"
    5355                "XREF-ENTRY-METHOD-QUALIFIERS"
    5456                "XREF-ENTRY-METHOD-SPECIALIZERS"
     
    7476           "XREF-ENTRY-NAME"
    7577           "XREF-ENTRY-TYPE"
     78           "XREF-ENTRY-FULL-NAME"
    7679           "XREF-ENTRY-METHOD-QUALIFIERS"
    7780           "XREF-ENTRY-METHOD-SPECIALIZERS"
     
    206209      (cond ((eq (car form) 'setf)
    207210             (setq name form))
    208             (t (setq name (car form))
    209                (let ((last (car (last (cdr form)))))
     211            (t
     212             (when (eq (car form) :method) (pop form))
     213             (setq name (car form))
     214             (let* ((last (car (last (cdr form)))))
    210215                 (cond ((and (listp last)(or (null last)(neq (car last) 'eql)))
    211216                        (setq classes last)
     
    217222                      (setq qualifiers nil))))))
    218223     (t (setq name form)))
    219     (when (and (consp name)(eq (car name) 'setf))
    220         (setq name (or (%setf-method (cadr name)) name))) ; e.g. rplacd
     224    (when (setf-function-name-p name)
     225      (setq name (canonical-maybe-setf-name name)))
    221226    (when (not (or (symbolp name)
    222227                   (setf-function-name-p name)))
     
    245250       (equal (xref-entry-method-specializers entry1)
    246251              (xref-entry-method-specializers entry2))))
     252
     253;; XREF-ENTRY-FULL-NAME -- external
     254;;
     255(defun xref-entry-full-name (entry)
     256  (if (eql (xref-entry-type entry) 'method)
     257    `(:method ,(xref-entry-name entry)
     258              ,@(xref-entry-method-qualifiers entry)
     259              ,(xref-entry-method-specializers entry))
     260    (xref-entry-name entry)))
     261
    247262
    248263;; %DB-KEY-FROM-XREF-ENTRY -- internal
Note: See TracChangeset for help on using the changeset viewer.