+
+;;; Make sure we get default initargs right with on the FAST-MAKE-INSTANCE path CTORs
+(defclass some-class ()
+ ((aroundp :initform nil :reader aroundp))
+ (:default-initargs :x :success?))
+(defmethod initialize-instance :around ((some-class some-class) &key (x :fail?))
+ (unless (eq x :success?)
+ (error "Default initarg lossage"))
+ (setf (slot-value some-class 'aroundp) t)
+ (when (next-method-p)
+ (call-next-method)))
+(with-test (:name (make-instance :ctor-default-initargs))
+ (assert (aroundp (eval `(make-instance 'some-class))))
+ (let ((fun (compile nil `(lambda () (make-instance 'some-class)))))
+ (assert (aroundp (funcall fun)))
+ ;; make sure we tested what we think we tested...
+ (let ((ctor (find-callee fun :type 'sb-pcl::ctor)))
+ (assert (find-callee ctor :name 'sb-pcl::fast-make-instance)))))