[slime-cvs] CVS slime/contrib

CVS User heller heller at common-lisp.net
Tue Mar 6 20:55:19 UTC 2012


Update of /project/slime/cvsroot/slime/contrib
In directory tiger.common-lisp.net:/tmp/cvs-serv8079/contrib

Modified Files:
	ChangeLog swank-kawa.scm 
Log Message:
* swank-kawa.scm (module-method>meth-ref):  Slightly better
heuristic for vararg functions.

--- /project/slime/cvsroot/slime/contrib/ChangeLog	2012/03/06 20:55:13	1.532
+++ /project/slime/cvsroot/slime/contrib/ChangeLog	2012/03/06 20:55:19	1.533
@@ -1,5 +1,10 @@
 2012-03-06  Helmut Eller  <heller at common-lisp.net>
 
+	* swank-kawa.scm (module-method>meth-ref):  Slightly better
+	heuristic for vararg functions.
+
+2012-03-06  Helmut Eller  <heller at common-lisp.net>
+
 	Add missing provide.
 
 	* swank-repl.lisp
--- /project/slime/cvsroot/slime/contrib/swank-kawa.scm	2011/12/02 18:18:11	1.26
+++ /project/slime/cvsroot/slime/contrib/swank-kawa.scm	2012/03/06 20:55:19	1.27
@@ -914,18 +914,23 @@
   (! location (module-method>meth-ref f)))
 
 (df module-method>meth-ref ((f <gnu.expr.ModuleMethod>) => <meth-ref>)
-  (let ((module (! reference-type
-                   (as <obj-ref> (vm-mirror *the-vm* (@ module f)))))
-	(name (mangled-name f)))
-    (as <meth-ref> (1st (! methods-by-name module name)))))
+  (let* ((module (! reference-type
+                    (as <obj-ref> (vm-mirror *the-vm* (@ module f)))))
+         (1st-method-by-name (fun (name)
+                               (let ((i (! methods-by-name module name)))
+                                 (cond ((! is-empty i) #f)
+                                       (#t (1st i)))))))
+    (as <meth-ref> (or (1st-method-by-name (! get-name f))
+                       (let ((mangled (mangled-name f)))
+                         (or (1st-method-by-name mangled)
+                             (1st-method-by-name (cat mangled "$V"))
+                             (1st-method-by-name (cat mangled "$X"))))))))
 
 (df mangled-name ((f <gnu.expr.ModuleMethod>))
   (let* ((name0 (! get-name f))
          (name (cond ((nul? name0) (format "lambda~d" (@ selector f)))
                      (#t (gnu.expr.Compilation:mangleName name0)))))
-    (if (= (! maxArgs f) -1)
-        (cat name "$V")
-        name)))
+    name))
 
 (df class>src-loc ((c <java.lang.Class>) => <location>)
   (let* ((type (class>class-ref c))





More information about the slime-cvs mailing list