- Aug 18, 2005
-
-
rtoy authored
to a methood is wrong. Bug found by ansi-tests.
-
- Jul 26, 2005
-
-
rtoy authored
-
- Jul 13, 2005
-
-
rtoy authored
o functions with doc-type of 'function or t o compiler-macros with doc-type 'compiler-macro These failures were found in the ansi-tests.
-
- Jul 07, 2005
-
-
rtoy authored
This is for one of Bruno's bug reports. For example, (defclass upd-history () ((history :initform ()))) (defmethod update-dependent ((gf generic-function) (history upd-history) &rest args) (push args (slot-value history 'history))) (defun history-event-list (history) (mapcar (lambda (event) (mapcar (lambda (x) (if (typep x 'method) (list 'method (mapcar #'class-name (method-specializers x))) x)) event)) (reverse (slot-value history 'history)))) (let ((hist (make-instance 'upd-history))) (defgeneric upd0 (x)) (add-dependent #'upd0 hist) (defmethod upd0 ((x integer))) (history-event-list hist)) => ((add-method (method (integer))))) But, instead of the above expected result, it produces => (nil (add-method (method (integer))))) The nil is from a reinitialize-instance of the gf, which is triggered by load-defmethod calling ensure-generic-function, which in turn calls ensure-generic-function-using-class on the existing gf, which finally calls reinitialize-instance. I'm not 100% sure if this is correct or not. My reading of CLHS/MOP is that this is at least not forbidden. Opinions? * src/pcl/methods.lisp (real-add-method, update-gf-dependents): New function. (real-add-method, real-remove-method): Call it. (reinitialize-instance) <:around standard-generic-function>: Update dependent objects. * src/pcl/std-class.lisp (update-dependent): New default method.
-
- Jun 20, 2005
-
-
rtoy authored
(progn (defclass foo92b (foo92a) ((s :initarg :s))) (defclass foo92a () ()) (let ((x (make-instance 'foo92b :s 5)) (update-counter 0)) (defclass foo92b (foo92a) ((s) (s1) (s2))) ; still subclass of foo92a (slot-value x 's) (defmethod update-instance-for-redefined-class ((object foo92b) added-slots discarded-slots property-list &rest initargs) (incf update-counter)) (make-instances-obsolete 'foo92a) (slot-value x 's) update-counter)) Expected: 1 Got: 0 [Taken from clisp's clos.tst] * src/pcl/std-class.lisp (force-cache-flushes): Use new state :obsolete if some superclass has been obsoleted. * src/pcl/cache.lisp (check-wrapper-validity): If state is :invalid, recurse because force-cache-flushes can change the state.
-
- Jun 15, 2005
-
-
rtoy authored
:allocation and caused a regression on defmethod-forwared-referenced.1 test.
-
- Jun 14, 2005
-
-
rtoy authored
This week's fix is for something Lynn Quam reported 2004-10-18. (defclass a (b) ()) (compile nil (lambda () (defclass b () ((x :reader b-x))) (defmethod f ((obj b)) (b-x obj)))) => error during macro expansion The fix is: * src/pcl/method-slot-access-optimization.lisp (check-inline-accessor-call-p): Return nil for forward-referenced classes. * src/pcl/info.lisp (decide-slot-type): Return nil for forward-referenced classes.
-
- Jun 06, 2005
-
-
rtoy authored
Fix from Gerd, cmucl-imp, 2005-06-04 for the following test: (define-method-combination mc () ((primary () :required t)) `(restart-case (call-method ,(first primary)) ())) (defgeneric foo () (:method-combination mc) (:method () nil)) (foo) It turns out this is caused by RESTART-CASE macroexpanding its case expression, which it does to see if it starts with ERROR or similar. An ANSI thing, if I remember correctly.
-
- May 31, 2005
-
-
rtoy authored
case reported by Bruno is: #+CMU (use-package "PCL") (defclass b (a) ()) (defmethod compute-slots ((class (eql (find-class 'b)))) (append (call-next-method) (list (make-instance 'standard-effective-slot-definition :name 'y :allocation :instance)))) (defclass a () ((x :allocation :class))) ;; A should now have a shared slot, X, and a local slot, Y. (mapcar #'slot-definition-location (class-slots (find-class 'b))) Instead of an error about no matching method, we get ((X . PCL::..SLOT-UNBOUND..) 0)
-
- May 23, 2005
-
-
rtoy authored
;; Shared slot becomes local. ;; 4.3.6.1.: "The value of a slot that is specified as shared in the old class ;; and as local in the new class is retained." (multiple-value-bind (value condition) (ignore-errors (defclass foo85a () ((size :initarg :size :initform 1 :allocation :class))) (defclass foo85b (foo85a) ()) (setq i (make-instance 'foo85b)) (defclass foo85a () ((size :initarg :size :initform 2) (other))) (slot-value i 'size)) (list value (type-of condition))) Expected: (1 NULL)
-
rtoy authored
This is also for something Bruno reported: The MOP p. 47 says about ensure-class-using-class: "The :metaclass argument is a class metaobject class or a class metaobject class name." However, CMUCL 19a does not support passing a class here.
-
- May 16, 2005
-
-
rtoy authored
This is another small fix for a problem Bruno reported: ;; 3.4.10 Define-method-combination Arguments Lambda Lists (progn (define-method-combination w-args () ((method-list *)) (:arguments arg1 arg2 &aux (extra :extra)) `(progn , <at> (mapcar #'(lambda (method) `(call-method ,method)) method-list))) (defgeneric mc-test-w-args (p1 p2 s) (:method-combination w-args) (:method ((p1 number) (p2 t) s) (vector-push-extend (list 'number p1 p2) s)) (:method ((p1 string) (p2 t) s) (vector-push-extend (list 'string p1 p2) s)) (:method ((p1 t) (p2 t) s) (vector-push-extend (list t p1 p2) s))) (let ((s (make-array 10 :adjustable t :fill-pointer 0))) (mc-test-w-args 1 2 s) s)) Expected: #((NUMBER 1 2) (T 1 2)) Got: ERROR: Lambda-variable is not a symbol: (EXTRA :EXTRA).
-
- Jan 27, 2005
-
-
rtoy authored
Patch from Sverker Wiberg, cmucl-imp, 2005-01-18.
-
- Dec 06, 2004
-
-
rtoy authored
for simple-streams. Add a test for this too. Bug report and fix from Lynn Quam, cmucl-imp, 2004-12-04.
-
- Oct 05, 2004
-
-
rtoy authored
removes the :slot initarg. These are all subsumed by the :name initarg and slot in a cell-error condition. This makes UNBOUND-SLOT no longer backward compatible. I hope that's ok.
-
- Sep 25, 2004
-
-
rtoy authored
specializer. Fixes a bug reported by Bruno Haible, cmucl-imp, 2004-09-15.
-
- Aug 06, 2004
-
-
rtoy authored
2004-08-05. (Taken from identical fix in sbcl.)
-
- Jul 11, 2004
- Jul 10, 2004
-
-
rtoy authored
-
- Jul 09, 2004
- Apr 14, 2004
-
-
rtoy authored
in the WALKER package.
-
- Apr 06, 2004
-
-
rtoy authored
cmucl-imp: The patch below adds a somewhat general mechanism to the get the "current location". So every macro that wants to record the source location, can insert a call to SOURCE-LOCATION in the generated code and safe the result in a appropriate place. SOURCE-LOCATION is a compiler-macro and returns a quoted struct with the source info. The patch adds the definition for SOURCE-LOCATION some modifications for the defclass, defgeneric and defmethod macros. Classes, generic functions and methods have already a "source" slot and the result of SOURCE-LOCATION is just stored into that slot. (The source slot contains currently only the *loadpath*, which is is not very useful, if the fasl file is in a different directory than the source file.)
-
- Apr 02, 2004
-
-
rtoy authored
-
- Mar 29, 2004
-
-
rtoy authored
Patch from Ole, very slightly modified.
-
- Jan 09, 2004
-
-
toy authored
to method parameters which are assigned to. This fixes a bug that shows up in McCLIM. (From Gerd, on cmucl-imp.)
-
toy authored
PCL, because it needed PCL's walker code. Fix this by always building with PCL's walker, which is independent of PCL: code/fwrappers.lisp: o Always use the PCL version, assuming PCL walker is included. pcl/defsys.lisp: o Don't build walk.lisp here, because it's built as a part of CMUCL. o Fix up dependencies. tools/worldcom.lisp: o Compile up pcl/walk.lisp tools/worldload.lisp: o Load up pcl/walk.lisp
-
- Nov 05, 2003
-
-
gerd authored
(defmethod name :before ((data data))) (name (make-instance 'data)) => too few args in a call to a method function This is caused by standard-reader/writer methods having a fast-function, but that's not the one that we should funcall if pcl::*inline-methods-in-emfs* is true. Use the fast-method-call mechanism for such methods instead. * src/pcl/combin.lisp (inlinable-method-p): New function. (make-direct-calls): Removed. (memf-test-converter): Add a local function method-key for determining the function generator key. (memf-code-converter): Add local functions make-call and make-calls. Generate direct calls if inlinable-method-p returns true.
-
- Oct 29, 2003
-
-
gerd authored
parameters that are being assigned to in the method body. Reported by Hans Chalupsky on cmucl-imp. * src/pcl/boot.lisp (method-parameter): New function, extracted from make-pv-call. (assigned-method-params): New function. (make-method-lambda-internal): Call it to disable optimizations on method parameters being assigned to. * src/pcl/method-slot-access-optimization.lisp (get-param/class-to-optimize): Use new function method-parameter. * src/pcl/gf-call-optimization.lisp (make-pv-call): Ditto. * src/pcl/std-class.lisp (ensure-class-using-class): Don't setq a method parameter.
-
- Oct 23, 2003
-
-
gerd authored
that happend awhile ago.
-
- Sep 06, 2003
-
-
gerd authored
functions. Reported by Craig Lanning. * src/pcl/boot.lisp (simple-lexical-method-functions): Rebind next-methods and method-args, and declare ignorable.
-
- Sep 05, 2003
-
-
gerd authored
unmatched parenthesis. * src/pcl/combin.lisp (standard-compute-effective-method): Remove an ignore declaration, add a special declaration.
-
- Sep 03, 2003
-
-
gerd authored
initargs are the same, including order and length, as the original make-instance args, for preserving arguments order in functions called from the ctor, e.g. initialize-instance. Reported by Craig Lanning.
-
- Aug 27, 2003
-
-
gerd authored
effect until a method is added or removed from the gf. Reported by Andreas Fuchs on a SBCL mailing list. * src/pcl/methods.lisp (reinitialize-instance) <standard-generic-function>: Make it an around method, call flush-effective-method-cache if the method combination changes. * src/pcl/dfun.lisp (flush-effective-method-cache): New function. (*effective-method-cache*): Renamed from *effective-method-table*.
-
- Aug 25, 2003
-
-
gerd authored
for ANSI compliance. * src/pcl/defcombin.lisp (compute-effective-method): If *in-precompute-effective-methods-p*, generate an emf consisting of a call to %invalid-qualifiers if there are such methods. * src/pcl/combin.lisp (standard-compute-effective-method): Likewise. (make-effective-method-lambda): Handle %invalid-qualifiers like %no-primary-method. * src/pcl/braid.lisp (%invalid-qualifiers): New function. (invalid-qualifiers): New method. * src/pcl/generic-functions.lisp (invalid-qualifiers): New gf. * src/pcl/dfun.lisp (*max-emf-precomputation-methods*): Set to 100. * src/docs/cmu-user/extensions.tex (Effective Method Precomputation): Change description of *max-emf-precomputation-methods*.
-
- Aug 16, 2003
-
-
gerd authored
arg to error.
-
- Jul 29, 2003
-
-
gerd authored
method qualifiers.
-