From: Alexey Dejneka Date: Sun, 8 Jun 2003 06:12:30 +0000 (+0000) Subject: 0.8.0.48: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=18936f9085457bc1b55d7345e7f1287e6abb85a5;p=sbcl.git 0.8.0.48: Fixed type declarations for functions returning trees. --- diff --git a/NEWS b/NEWS index 12168c2..8db8676 100644 --- a/NEWS +++ b/NEWS @@ -1820,6 +1820,8 @@ changes in sbcl-0.8.1 relative to sbcl-0.8.0: after the first few invocations. (thanks to Gerd Moellmann) ** CALL-NEXT-METHOD with no arguments now passes the original values of the arguments, even in the presence of assignment. + ** functions [N]SUBST*, LAST, NRECONC, [N]SUBLIS may return any + object. planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles diff --git a/package-data-list.lisp-expr b/package-data-list.lisp-expr index 7f4ef67..c78b852 100644 --- a/package-data-list.lisp-expr +++ b/package-data-list.lisp-expr @@ -1075,14 +1075,16 @@ is a good idea, but see SB-SYS re. blurring of boundaries." "FLOAT-EXPONENT" "FLOAT-FORMAT-DIGITS" "FLOAT-FORMAT-NAME" "FLOAT-FORMAT-MAX" "FLOATING-POINT-EXCEPTION" "FORM" "*FREE-INTERRUPT-CONTEXT-INDEX*" "FUNCALLABLE-INSTANCE-P" - "FUN-CODE-HEADER" + "FUN-CODE-HEADER" "FUN-TYPE" "FUN-TYPE-ALLOWP" "FUN-TYPE-KEYP" "FUN-TYPE-KEYWORDS" "FUN-TYPE-NARGS" "FUN-TYPE-OPTIONAL" "FUN-TYPE-P" "FUN-TYPE-REQUIRED" "FUN-TYPE-REST" "FUN-TYPE-RETURNS" "FUN-TYPE-WILD-ARGS" - "FUN-WORD-OFFSET" "GET-CLOSURE-LENGTH" + "FUN-WORD-OFFSET" + "GENERALIZED-BOOLEAN" + "GET-CLOSURE-LENGTH" "GET-HEADER-DATA" "GET-LISP-OBJ-ADDRESS" "LOWTAG-OF" "WIDETAG-OF" @@ -1256,7 +1258,8 @@ is a good idea, but see SB-SYS re. blurring of boundaries." "%INSTANCE-LENGTH" "%INSTANCE-REF" "%INSTANCE-SET" "SYSTEM-AREA-CLEAR" - "SYSTEM-AREA-COPY" "TWO-ARG-*" + "SYSTEM-AREA-COPY" + "TWO-ARG-*" "TWO-ARG-+" "TWO-ARG--" "TWO-ARG-/" "TWO-ARG-/=" "TWO-ARG-<" "TWO-ARG-<=" "TWO-ARG-=" diff --git a/src/code/deftypes-for-target.lisp b/src/code/deftypes-for-target.lisp index ce70217..232c61d 100644 --- a/src/code/deftypes-for-target.lisp +++ b/src/code/deftypes-for-target.lisp @@ -101,6 +101,9 @@ ;;;; some private types that we use in defining the standard functions, ;;;; or implementing declarations in standard compiler transforms +;;; semistandard types +(sb!xc:deftype generalized-boolean () t) + ;;; a type specifier ;;; ;;; FIXME: The SB!KERNEL:INSTANCE here really means CL:CLASS. diff --git a/src/code/list.lisp b/src/code/list.lisp index a65faac..47e476a 100644 --- a/src/code/list.lisp +++ b/src/code/list.lisp @@ -637,7 +637,7 @@ ((atom subtree) subtree) (t (let ((car (s (car subtree))) (cdr (s (cdr subtree)))) - (if (and (eq car (car subtreE)) + (if (and (eq car (car subtree)) (eq cdr (cdr subtree))) subtree (cons car cdr)))))))) diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 7112bf1..e5d27c7 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -686,7 +686,7 @@ (defknown list-length (list) (or index null) (foldable unsafely-flushable)) (defknown nth (index list) t (foldable flushable)) (defknown nthcdr (index list) t (foldable unsafely-flushable)) -(defknown last (list &optional index) list (foldable flushable)) +(defknown last (list &optional index) t (foldable flushable)) (defknown list (&rest t) list (movable flushable unsafe)) (defknown list* (t &rest t) t (movable flushable unsafe)) (defknown make-list (index &key (:initial-element t)) list @@ -706,7 +706,7 @@ ;;; not check it now :-). (defknown nconc (&rest t) t ()) -(defknown nreconc (list t) list ()) +(defknown nreconc (list t) t ()) (defknown butlast (list &optional index) list (flushable)) (defknown nbutlast (list &optional index) list ()) (defknown ldiff (list t) list (flushable)) @@ -714,15 +714,15 @@ (defknown (nsubst subst) (t t t &key (:key callable) (:test callable) (:test-not callable)) - list (flushable unsafe call)) + t (flushable unsafe call)) (defknown (subst-if subst-if-not nsubst-if nsubst-if-not) - (t t t &key (:key callable)) - list (flushable unsafe call)) + (t callable t &key (:key callable)) + t (flushable unsafe call)) (defknown (sublis nsublis) (list t &key (:key callable) (:test callable) (:test-not callable)) - list (flushable unsafe call)) + t (flushable unsafe call)) (defknown member (t list &key (:key callable) (:test callable) (:test-not callable)) @@ -1066,9 +1066,10 @@ (member nil :host :device :directory :name :type :version)) - t + generalized-boolean ()) -(defknown pathname-match-p (pathname-designator pathname-designator) t +(defknown pathname-match-p (pathname-designator pathname-designator) + generalized-boolean ()) (defknown translate-pathname (pathname-designator pathname-designator diff --git a/version.lisp-expr b/version.lisp-expr index 65554de..bdbafaa 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.0.47" +"0.8.0.48"