[slime-cvs] CVS update: slime/swank-cmucl.lisp
Helmut Eller
heller at common-lisp.net
Wed Mar 10 22:10:26 UTC 2004
Update of /project/slime/cvsroot/slime
In directory common-lisp.net:/tmp/cvs-serv19885
Modified Files:
swank-cmucl.lisp
Log Message:
(find-definitions): Include setf defintions compiler-macros and
transforms.
Date: Wed Mar 10 17:10:26 2004
Author: heller
Index: slime/swank-cmucl.lisp
diff -u slime/swank-cmucl.lisp:1.86 slime/swank-cmucl.lisp:1.87
--- slime/swank-cmucl.lisp:1.86 Wed Mar 10 13:49:47 2004
+++ slime/swank-cmucl.lisp Wed Mar 10 17:10:26 2004
@@ -657,7 +657,8 @@
(defun gf-location (gf)
(let ((def-source (pcl::definition-source gf))
- (name (string (pcl:generic-function-name gf))))
+ (name (string (nth-value 1 (ext:valid-function-name-p
+ (pcl:generic-function-name gf))))))
(etypecase def-source
(pathname (make-name-in-file-location def-source name))
(cons
@@ -688,10 +689,12 @@
(t (list (list `(function ,symbol)
(function-location function)))))))))
+(defun maybe-make-definition (function kind symbol)
+ (if function
+ (list (list `(,kind ,symbol) (function-location function)))))
+
(defun type-definitions (symbol)
- (let ((expander (ext:info :type :expander symbol)))
- (if expander
- (list (list `(type ,symbol) (function-location expander))))))
+ (maybe-make-definition (ext:info :type :expander symbol) 'deftype symbol))
(defun find-dd (name)
(let ((layout (ext:info :type :compiler-layout name)))
@@ -703,11 +706,62 @@
(if dd
(list (list `(defstruct ,symbol) (dd-location dd))))))
+(defun setf-definitions (symbol)
+ (let ((function (or (let ((name `(setf ,symbol)))
+ (if (lisp::fdefinition-object name nil)
+ name))
+ (ext:info :setf :inverse symbol)
+ (ext:info :setf :expander symbol))))
+ (if function
+ (list (list `(setf ,symbol)
+ (function-location (coerce function 'function)))))))
+
+(defun compiler-macro-definitions (symbol)
+ (maybe-make-definition (compiler-macro-function symbol)
+ 'define-compiler-macro
+ symbol))
+
+(defun source-transform-definitions (symbol)
+ (maybe-make-definition (ext:info :function :source-transform symbol)
+ 'c:def-source-transform
+ symbol))
+
+(defun function-info-definitions (symbol)
+ (let ((info (ext:info :function :info symbol)))
+ (if info
+ (append (loop for transform in (c::function-info-transforms info)
+ collect (list `(c:deftransform ,symbol
+ ,(c::type-specifier
+ (c::transform-type transform)))
+ (function-location (c::transform-function
+ transform))))
+ (maybe-make-definition (c::function-info-derive-type info)
+ 'c::derive-type symbol)
+ (maybe-make-definition (c::function-info-optimizer info)
+ 'c::optimizer symbol)
+ (maybe-make-definition (c::function-info-ltn-annotate info)
+ 'c::ltn-annotate symbol)
+ (maybe-make-definition (c::function-info-ir2-convert info)
+ 'c::ir2-convert symbol)
+ (loop for template in (c::function-info-templates info)
+ collect (list `(c::vop ,(c::template-name template))
+ (function-location
+ (c::vop-info-generator-function
+ template))))))))
+
+(defun ir1-translator-definitions (symbol)
+ (maybe-make-definition (ext:info :function :ir1-convert symbol)
+ 'c:def-ir1-translator symbol))
+
(defimplementation find-definitions (symbol)
(append (function-definitions symbol)
+ (setf-definitions symbol)
+ (struct-definitions symbol)
(type-definitions symbol)
- (struct-definitions symbol)))
-
+ (compiler-macro-definitions symbol)
+ (source-transform-definitions symbol)
+ (function-info-definitions symbol)
+ (ir1-translator-definitions symbol)))
;;;; Documentation.
@@ -1148,7 +1202,6 @@
(typep (symbol-value x) 'fixnum)))
(append (apropos-list "-TYPE" "VM" t)
(apropos-list "-TYPE" "BIGNUM" t)))))
-
(defimplementation describe-primitive-type (object)
(with-output-to-string (*standard-output*)
More information about the slime-cvs
mailing list