X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffndb.lisp;h=6b80f4ded157230c7239d0cdb3ca294051ccbc5d;hb=403bacffd903f8c5787a182f4133cffc69b55dc0;hp=113cb1da2dacf22615f597c7b2012692e7a954b5;hpb=6a756846fe0fe89835ec5eb68327b612c93f82c4;p=sbcl.git diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 113cb1d..6b80f4d 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -44,7 +44,7 @@ (defknown type-of (t) t (foldable flushable)) ;;; These can be affected by type definitions, so they're not FOLDABLE. -(defknown (upgraded-complex-part-type upgraded-array-element-type) +(defknown (upgraded-complex-part-type sb!xc:upgraded-array-element-type) (type-specifier &optional lexenv-designator) type-specifier (unsafely-flushable)) @@ -455,11 +455,11 @@ (:initial-element t)) consed-sequence (movable unsafe) - :derive-type (result-type-specifier-nth-arg 1)) + :derive-type (creation-result-type-specifier-nth-arg 1)) (defknown concatenate (type-specifier &rest sequence) consed-sequence () - :derive-type (result-type-specifier-nth-arg 1)) + :derive-type (creation-result-type-specifier-nth-arg 1)) (defknown (map %map) (type-specifier callable sequence &rest sequence) consed-sequence @@ -634,14 +634,15 @@ (defknown (stable-sort sort) (sequence callable &key (:key callable)) sequence (call) :derive-type (sequence-result-nth-arg 1)) -(defknown sb!impl::sort-vector (vector index index function (or function null)) vector +(defknown sb!impl::sort-vector (vector index index function (or function null)) + * ; SORT-VECTOR works through side-effect (call)) (defknown merge (type-specifier sequence sequence callable &key (:key callable)) sequence (call) - :derive-type (result-type-specifier-nth-arg 1)) + :derive-type (creation-result-type-specifier-nth-arg 1)) ;;; not FLUSHABLE, despite what CMU CL's DEFKNOWN said.. (defknown read-sequence (sequence stream @@ -683,9 +684,9 @@ (foldable flushable call)) (defknown endp (list) boolean (foldable flushable movable)) (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 nth (unsigned-byte list) t (foldable flushable)) +(defknown nthcdr (unsigned-byte list) t (foldable unsafely-flushable)) +(defknown last (list &optional unsigned-byte) 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 @@ -705,23 +706,23 @@ ;;; 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 ()) +(defknown nreconc (list t) t ()) +(defknown butlast (list &optional unsigned-byte) list (flushable)) +(defknown nbutlast (list &optional unsigned-byte) list ()) (defknown ldiff (list t) list (flushable)) (defknown (rplaca rplacd) (cons t) list (unsafe)) (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)) @@ -1065,9 +1066,10 @@ (member nil :host :device :directory :name :type :version)) - boolean + generalized-boolean ()) -(defknown pathname-match-p (pathname-designator pathname-designator) boolean +(defknown pathname-match-p (pathname-designator pathname-designator) + generalized-boolean ()) (defknown translate-pathname (pathname-designator pathname-designator @@ -1131,7 +1133,7 @@ pathname-version (flushable)) (defknown (namestring file-namestring directory-namestring host-namestring) - (pathname-designator) simple-string + (pathname-designator) (or simple-string null) (unsafely-flushable)) (defknown enough-namestring (pathname-designator &optional pathname-designator) @@ -1148,12 +1150,7 @@ :rename-and-delete :overwrite :append :supersede nil)) (:if-does-not-exist (member :error :create nil)) - (:external-format - ;; FIXME: This is logically (MEMBER :DEFAULT), - ;; but as a workaround for bug 244, we don't - ;; declare it (to keep the compiler from trusting - ;; the declaration unchecked). - t)) + (:external-format (member :default))) (or stream null)) (defknown rename-file (pathname-designator filename) @@ -1176,22 +1173,38 @@ (:verbose t) (:print t) (:if-does-not-exist (member :error :create nil)) - (:external-format - ;; FIXME: This is logically (MEMBER :DEFAULT), but as a workaround - ;; for bug 244, we don't declare it (to keep the compiler from - ;; trusting the declaration unchecked). - t)) + (:external-format (member :default))) t) (defknown directory (pathname-designator &key) list ()) -;;;; from the "Errors" chapter: - -(defknown error (t &rest t) nil) ; never returns -(defknown cerror (string t &rest t) null) +;;;; from the "Conditions" chapter: + +(defknown cell-error-name (cell-error) t) +(defknown error (t &rest t) nil) +(defknown cerror (format-control t &rest t) null) +(defknown invalid-method-error (t format-control &rest t) *) ; FIXME: first arg is METHOD +(defknown method-combination-error (format-control &rest t) *) +(defknown signal (t &rest t) null) +(defknown simple-condition-format-control (condition) + format-control) +(defknown simple-condition-format-arguments (condition) + list) (defknown warn (t &rest t) null) -(defknown break (&optional t &rest t) null) +(defknown invoke-debugger (condition) nil) +(defknown break (&optional format-control &rest t) null) +(defknown make-condition (type-specifier &rest t) condition) +(defknown compute-restarts (&optional (or condition null)) list) +(defknown find-restart (restart-designator &optional (or condition null)) + (or restart null)) +(defknown invoke-restart (restart-designator &rest t) *) +(defknown invoke-restart-interactively (restart-designator) *) +(defknown restart-name (restart) symbol) +(defknown (abort muffle-warning) (&optional (or condition null)) nil) +(defknown continue (&optional (or condition null)) null) +(defknown (store-value use-value) (t &optional (or condition null)) + null) ;;; and analogous SBCL extension: (defknown bug (t &rest t) nil) ; never returns @@ -1325,6 +1338,11 @@ (defknown %%primitive (t t &rest t) *) (defknown %pop-values (t) t) (defknown %type-check-error (t t) nil) + +;; FIXME: This function does not return, but due to the implementation +;; of FILTER-CONTINUATION we cannot write it here. +(defknown %compile-time-type-error (t t t) *) + (defknown %odd-key-args-error () nil) (defknown %unknown-key-arg-error (t) nil) (defknown (%ldb %mask-field) (bit-index bit-index integer) unsigned-byte @@ -1395,7 +1413,7 @@ (defknown (setf fdocumentation) ((or string null) t symbol) (or string null) ()) -(defknown %setnth (index list t) t (unsafe)) +(defknown %setnth (unsigned-byte list t) t (unsafe)) (defknown %set-fill-pointer (vector index) index (unsafe)) ;;;; miscellaneous internal utilities