Fix overload resolution using types and test caching the overload resolution.
src/overload-resolution.lisp
Tue Sep 1 13:44:21 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Fix overload resolution using types and test caching the overload resolution.
--- old-smoke/src/overload-resolution.lisp 2014-10-30 08:10:44.000000000 +0100
+++ new-smoke/src/overload-resolution.lisp 2014-10-30 08:10:44.000000000 +0100
@@ -140,7 +140,7 @@
make-number-conversion make-pointer-conversion
make-boolean-conversion make-user-conversion))
(defstruct conversion
- (function-name nil :type (or symbol function) :read-only t)
+ (function-name nil :type (or symbol list function) :read-only t)
(rank -1 :type fixnum :read-only t))
(defstruct (exact-match (:include conversion (rank 0))))
@@ -208,12 +208,11 @@
,name
(fdefinition ,name)))))
-(defmacro make-match (type &optional (name ''identity)
- (argument nil)
+(defmacro make-match (type &optional (name ''identity) (argument nil)
&rest args)
`(,(symbolicate 'make- (eval type))
- :function-name ,(conversion-function name argument)
- ,@args))
+ :function-name ,(conversion-function name argument)
+ ,@args))
(defun+using-type get-conversion-sequence object (object type &optional user)
"Retrains a conversion sequence to convert a instance of type CLASS
@@ -499,7 +498,8 @@
(condition-method condition)
(condition-class condition)
(condition-arguments condition)))))
-
+
+
(defun call-using-args (object-or-class name arguments)
"Calls the method NAME of OBJECT-OR-CLASS with ARGUMENTS."
(declare (optimize (speed 3)))