0.8.0.48:
authorAlexey Dejneka <adejneka@comail.ru>
Sun, 8 Jun 2003 06:12:30 +0000 (06:12 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sun, 8 Jun 2003 06:12:30 +0000 (06:12 +0000)
        Fixed type declarations for functions returning trees.

NEWS
package-data-list.lisp-expr
src/code/deftypes-for-target.lisp
src/code/list.lisp
src/compiler/fndb.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 12168c2..8db8676 100644 (file)
--- 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
index 7f4ef67..c78b852 100644 (file)
@@ -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-="
index ce70217..232c61d 100644 (file)
 ;;;; 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.
index a65faac..47e476a 100644 (file)
                        ((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))))))))
index 7112bf1..e5d27c7 100644 (file)
 (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
 ;;; 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))
 
 (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))
                           (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
index 65554de..bdbafaa 100644 (file)
@@ -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"