X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=ab6d4a19631a42d9e9c030d442e5c1d0dbb0ac50;hb=435b7acd186484b1eed5ab615c43bcc1701fcd6c;hp=002b9c3d9c59eca0bf4b720a9ca73a7a7ac744e3;hpb=ad461399cb70f01e2f3871373b19b3716864533c;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 002b9c3..ab6d4a1 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -425,12 +425,12 @@ :derive-type (sequence-result-nth-arg 1)) (defknown copy-seq (sequence) consed-sequence (flushable) - :derive-type #'result-type-first-arg) + :derive-type (sequence-result-nth-arg 1)) (defknown length (sequence) index (foldable flushable)) (defknown reverse (sequence) consed-sequence (flushable) - :derive-type #'result-type-first-arg) + :derive-type (sequence-result-nth-arg 1)) (defknown nreverse (sequence) sequence () :derive-type #'result-type-first-arg) @@ -495,7 +495,7 @@ (defknown remove (t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) @@ -503,21 +503,21 @@ (defknown substitute (t t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) (defknown (remove-if remove-if-not) (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) (defknown (substitute-if substitute-if-not) (t callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) consed-sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) @@ -525,7 +525,7 @@ (defknown delete (t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) @@ -533,21 +533,21 @@ (defknown nsubstitute (t t sequence &key (:from-end t) (:test callable) (:test-not callable) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) (defknown (delete-if delete-if-not) (callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 2)) (defknown (nsubstitute-if nsubstitute-if-not) (t callable sequence &key (:from-end t) (:start index) (:end sequence-end) - (:count sequence-end) (:key callable)) + (:count sequence-count) (:key callable)) sequence (flushable call) :derive-type (sequence-result-nth-arg 3)) @@ -667,14 +667,19 @@ (movable flushable unsafe)) ;;; All but last must be of type LIST, but there seems to be no way to -;;; express that in this syntax.. +;;; express that in this syntax. (defknown append (&rest t) t (flushable)) (defknown copy-list (list) list (flushable)) (defknown copy-alist (list) list (flushable)) (defknown copy-tree (t) t (flushable recursive)) (defknown revappend (list t) t (flushable)) -(defknown nconc (&rest list) list ()) + +;;; All but last must be of type LIST, but there seems to be no way to +;;; express that in this syntax. The result must be LIST, but we do +;;; not check it now :-). +(defknown nconc (&rest t) t ()) + (defknown nreconc (list t) list ()) (defknown butlast (list &optional index) list (flushable)) (defknown nbutlast (list &optional index) list ()) @@ -805,7 +810,7 @@ #|:derive-type #'result-type-last-arg|#) (defknown array-has-fill-pointer-p (array) boolean - (movable foldable unsafely-flushable)) + (movable foldable flushable)) (defknown fill-pointer (vector) index (foldable unsafely-flushable)) (defknown vector-push (t vector) (or index null) ()) (defknown vector-push-extend (t vector &optional index) index ())