properly.
* bug fix: functions from EVAL are now on more equal footing with functions
from COMPILE. (lp#1000783, lp#851170, lp#922408)
+ * bug fix: ENSURE-GENERIC-METHOD-COMBINATION accepts method combination
+ objects as its :METHOD-COMBINATION argument, not just lists designating
+ method combinations. (lp#936513)
changes in sbcl-1.0.57 relative to sbcl-1.0.56:
* RANDOM enhancements and bug fixes:
(finalize-inheritance ,gf-class)))
(remf ,all-keys :generic-function-class)
(remf ,all-keys :environment)
- (let ((combin (getf ,all-keys :method-combination '.shes-not-there.)))
- (unless (eq combin '.shes-not-there.)
- (setf (getf ,all-keys :method-combination)
- (find-method-combination (class-prototype ,gf-class)
- (car combin)
- (cdr combin)))))
+ (let ((combin (getf ,all-keys :method-combination)))
+ (etypecase combin
+ (cons
+ (setf (getf ,all-keys :method-combination)
+ (find-method-combination (class-prototype ,gf-class)
+ (car combin)
+ (cdr combin))))
+ ((or null method-combination))))
(let ((method-class (getf ,all-keys :method-class '.shes-not-there.)))
(unless (eq method-class '.shes-not-there.)
(setf (getf ,all-keys :method-class)
(sb-mop:class-direct-superclasses (make-instance 'standard-class))))
(assert (equal (list (find-class 'sb-mop:funcallable-standard-object))
(sb-mop:class-direct-superclasses (make-instance 'sb-mop:funcallable-standard-class))))
+
+(with-test (:name :bug-936513)
+ ;; This used to fail as ENSURE-GENERIC-FUNCTION wanted a list specifying
+ ;; the method combination, and didn't accept the actual object
+ (let ((mc (sb-pcl:find-method-combination #'make-instance 'standard nil)))
+ (ensure-generic-function 'make-instance :method-combination mc))
+ ;; Let's make sure the list works too...
+ (ensure-generic-function 'make-instance :method-combination '(standard)))