Changeset 10482


Ignore:
Timestamp:
Aug 15, 2008, 5:47:44 PM (11 years ago)
Author:
gz
Message:

Make find-definitions-of-thing actually work on function objects with source info

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lib/source-files.lisp

    r9950 r10482  
    432432               (and (eql (first a) (first b))
    433433                    (definition-name-equal-p (second a) (second b))))
     434             (collect-defs (defs)
     435               (setf definitions
     436                     (remove-duplicates (append definitions defs) :test #'def-eql)))
    434437             (collect-def (type name)
    435                (setf definitions
    436                      (remove-duplicates (append definitions
    437                                                 (find-definitions-for-name name type))
    438                                         :test #'def-eql))))
     438               (collect-defs (find-definitions-for-name name type))))
    439439      (typecase thing
    440440        (method-function (collect-def 'method (%method-function-method thing)))
    441441        (function  (if (getf (%lfun-info thing) 'function-source-note)
    442                      (let* ((function-source-note (getf (%lfun-info thing) 'function-source-note)))
    443                        (list (%make-source-note :start-pos (getf function-source-note :start)
    444                                                 :end-pos (getf function-source-note :end)
    445                                                 :source (%fast-uncompact (getf function-source-note :%text  ))
    446                                                 :file-name (getf function-source-note :file-name))))
     442                     (let* ((type (find 'function *definition-types* :key #'definition-type-name))
     443                            (name (or (function-name thing) thing))
     444                            (function-source-note (getf (%lfun-info thing) 'function-source-note))
     445                            (source (%make-source-note
     446                                     :start-pos (getf function-source-note :start)
     447                                     :end-pos (getf function-source-note :end)
     448                                     :source (%fast-uncompact (getf function-source-note :%text))
     449                                     :file-name (getf function-source-note :file-name))))
     450                       (collect-defs (list (list type name source))))
    447451                     (collect-def 'function (function-name thing))))
    448452        (class     (collect-def 'class (class-name thing)))
Note: See TracChangeset for help on using the changeset viewer.