From: William Harold Newman Date: Wed, 7 Feb 2001 20:04:34 +0000 (+0000) Subject: 0.6.10.11: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=92f6ecdad23faf8b1677c24aa57c5eaec96d9c82;p=sbcl.git 0.6.10.11: fixed problem pointed out by Raymond Wiker: DEFCONSTANT-EQX now EVALs EXPR only once per situation tweaked some compiler output for better line breaking --- diff --git a/make.sh b/make.sh index 426075e..eefedc9 100755 --- a/make.sh +++ b/make.sh @@ -4,7 +4,7 @@ # for getting an executable from it. We want any two reconstructions # starting from the same source to end up in the same result. That's # just a basic intellectual premise." -# -- Christian Quinnec, in _Lisp In Small Pieces_, p. 313 +# -- Christian Queinnec, in _Lisp In Small Pieces_, p. 313 # This software is part of the SBCL system. See the README file for # more information. diff --git a/src/code/primordial-extensions.lisp b/src/code/primordial-extensions.lisp index 9facae7..ecbc70a 100644 --- a/src/code/primordial-extensions.lisp +++ b/src/code/primordial-extensions.lisp @@ -175,10 +175,14 @@ ;; ANSI Common Lisp operations. (eval-when (:compile-toplevel :load-toplevel :execute) (let ((,expr-tmp ,expr)) - (unless (and (boundp ',symbol) - (constantp ',symbol) - (funcall ,eqx (symbol-value ',symbol) ,expr-tmp)) - (defconstant ,symbol ,expr ,@(when doc `(,doc)))))) + (cond ((boundp ',symbol) + (unless (and (constantp ',symbol) + (funcall ,eqx + (symbol-value ',symbol) + ,expr-tmp)) + (error "already bound differently: ~S"))) + (t + (defconstant ,symbol ,expr-tmp ,@(when doc `(,doc))))))) ;; The #+SB-XC :COMPILE-TOPLEVEL situation is special, since we ;; want to define the symbol not just in the cross-compilation ;; host Lisp (which was handled above) but also in the @@ -193,7 +197,7 @@ ;; instead. -- WHN 2000-11-03 #+sb-xc (eval-when (:compile-toplevel) - (let ((,expr-tmp ,expr)) + (let ((,expr-tmp ,symbol)) (unless (and (eql (info :variable :kind ',symbol) :constant) (funcall ,eqx (info :variable :constant-value ',symbol) diff --git a/src/compiler/ir1final.lisp b/src/compiler/ir1final.lisp index dfd2834..98548ee 100644 --- a/src/compiler/ir1final.lisp +++ b/src/compiler/ir1final.lisp @@ -27,13 +27,7 @@ (note (transform-note (car failure)))) (cond ((consp what) - ;; FIXME: This sometimes gets too long for a single line, e.g. - ;; "note: unable to optimize away possible call to FDEFINITION at runtime due to type uncertainty:" - ;; It would be nice to pretty-print it somehow, but how? - ;; ~@<..~:@> adds ~_ directives to the spaces which are in - ;; the format string, but a lot of the spaces where we'd want - ;; to break are in the included ~A string instead. - (compiler-note "unable to ~A because:~%~6T~?" + (compiler-note "~@" note (first what) (rest what))) ((valid-function-use node what :argument-test #'types-intersect @@ -45,10 +39,17 @@ (valid-function-use node what :warning-function #'frob :error-function #'frob)) - - (compiler-note "unable to ~A due to type uncertainty:~@ - ~{~6T~?~^~&~}" - note (messages)))))))))) + (compiler-note "~@" + note (messages)))) + ;; As best I can guess, it's OK to fall off the end here + ;; because if it's not a VALID-FUNCTION-USE, the user + ;; doesn't want to hear about it. The things I caught when + ;; I put ERROR "internal error: unexpected FAILURE=~S" here + ;; didn't look like things we need to report. -- WHN 2001-02-07 + )))))) ;;; For each named function with an XEP, note the definition of that ;;; name, and add derived type information to the info environment. We diff --git a/tests/run-tests.sh b/tests/run-tests.sh index 400a29e..e4de8cf 100644 --- a/tests/run-tests.sh +++ b/tests/run-tests.sh @@ -79,3 +79,5 @@ for f in *.assertoids; do echo "(load \"$f\")" | $sbcl --eval '(load "assertoid.lisp")' ; tenfour fi done + +echo '//apparent success (reached end of run-tests.sh normally)' diff --git a/version.lisp-expr b/version.lisp-expr index ae34e49..102d205 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -15,4 +15,4 @@ ;;; versions, and a string like "0.6.5.12" is used for versions which ;;; aren't released but correspond only to CVS tags or snapshots. -"0.6.10.10" +"0.6.10.11"