From: Christophe Rhodes Date: Mon, 27 Jan 2003 09:08:49 +0000 (+0000) Subject: 0.7.12.3: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=42f11f1ddfa083cb62921c77e391441fdd11f3ae;p=sbcl.git 0.7.12.3: Fix two difficult-to-test bugs, as per discussion ('Three "interesting" PCL bugs', sbcl-devel 2003-01-25) ... make sure the %CLASS declaration is in the right place even if a class name is the same as a variable name; ... for FIXNUM emf, the new-value and the slot object arguments are distinct. This may well be dead code. --- diff --git a/src/pcl/boot.lisp b/src/pcl/boot.lisp index 09719c9..fe00080 100644 --- a/src/pcl/boot.lisp +++ b/src/pcl/boot.lisp @@ -932,7 +932,7 @@ bootstrapping. `(((typep ,emf 'fixnum) (let ((.new-value. ,(car required-args+rest-arg)) (.slots. (get-slots-or-nil - ,(car required-args+rest-arg)))) + ,(cadr required-args+rest-arg)))) (when .slots. (setf (clos-slots-ref .slots. ,emf) .new-value.)))))) ;; (In cmucl-2.4.8 there was a commented-out third ,@(WHEN diff --git a/src/pcl/vector.lisp b/src/pcl/vector.lisp index 292e763..9ad9272 100644 --- a/src/pcl/vector.lisp +++ b/src/pcl/vector.lisp @@ -987,20 +987,26 @@ (push declaration-name *var-declarations-without-arg*)) (when arg-p (setq dname (append dname (list (pop form))))) - (dolist (var form) - (if (member var args) - ;; Quietly remove IGNORE declarations on - ;; args when a next-method is involved, to - ;; prevent compiler warnings about ignored - ;; args being read. - (unless (and calls-next-method-p - (eq (car dname) 'ignore)) - (push var outers)) - (push var inners))) - (when outers - (push `(declare (,@dname ,@outers)) outer-decls)) - (when inners - (push `(declare (,@dname ,@inners)) inner-decls))))))) + (case (car dname) + (%class (push `(declare (,@dname ,@form)) inner-decls)) + (t + (dolist (var form) + (if (member var args) + ;; Quietly remove IGNORE declarations + ;; on args when a next-method is + ;; involved, to prevent compiler + ;; warnings about ignored args being + ;; read. + (unless (and calls-next-method-p + (eq (car dname) 'ignore)) + (push var outers)) + (push var inners))) + (when outers + (push `(declare (,@dname ,@outers)) outer-decls)) + (when inners + (push + `(declare (,@dname ,@inners)) + inner-decls))))))))) (setq body (cdr body))) (values outer-decls inner-decls body))) diff --git a/version.lisp-expr b/version.lisp-expr index d0acfe4..4c4af7d 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.12.2" +"0.7.12.3"