(defknown get-properties (list list) (values t t list) (foldable flushable))
(defknown symbol-name (symbol) simple-string (movable foldable flushable))
(defknown make-symbol (string) symbol (flushable))
+(defknown %make-symbol (simple-string) symbol (flushable))
(defknown copy-symbol (symbol &optional t) symbol (flushable))
(defknown gensym (&optional (or string unsigned-byte)) symbol ())
(defknown symbol-package (symbol) (or sb!xc:package null) (flushable))
(defknown reverse (sequence) consed-sequence (flushable)
:derive-type (sequence-result-nth-arg 1))
-(defknown nreverse (sequence) sequence ()
+(defknown nreverse (sequence) sequence (important-result)
:derive-type #'result-type-first-arg
:destroyed-constant-args (nth-constant-nonempty-sequence-args 1))
(:test-not callable) (:start index) (:end sequence-end)
(:count sequence-count) (:key callable))
sequence
- (flushable call)
+ (flushable call important-result)
:derive-type (sequence-result-nth-arg 2)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 2))
(callable sequence &key (:from-end t) (:start index) (:end sequence-end)
(:count sequence-count) (:key callable))
sequence
- (flushable call)
+ (flushable call important-result)
:derive-type (sequence-result-nth-arg 2)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 2))
(sequence &key (:test callable) (:test-not callable) (:start index)
(:from-end t) (:end sequence-end) (:key callable))
sequence
- (unsafely-flushable call)
+ (unsafely-flushable call important-result)
:derive-type (sequence-result-nth-arg 1)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 1))
(call)
:derive-type (sequence-result-nth-arg 1)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 1))
+(defknown sb!impl::stable-sort-list (list function function) list
+ (call important-result)
+ :destroyed-constant-args (nth-constant-nonempty-sequence-args 1))
(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)
+ (call important-result)
:derive-type (creation-result-type-specifier-nth-arg 1)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 2 3))
(defknown sb!impl::nconc2 (list t) t ()
:destroyed-constant-args (remove-non-constants-and-nils #'butlast))
-(defknown nreconc (list t) t ()
+(defknown nreconc (list t) t (important-result)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 1))
(defknown butlast (list &optional unsigned-byte) list (flushable))
(defknown nbutlast (list &optional unsigned-byte) list ()
(defknown (nunion nintersection nset-difference nset-exclusive-or)
(list list &key (:key callable) (:test callable) (:test-not callable))
list
- (foldable flushable call)
+ (foldable flushable call important-result)
:destroyed-constant-args (nth-constant-nonempty-sequence-args 1 2))
(defknown subsetp
:destroyed-constant-args (nth-constant-args 1))
;;; FIXME: complicated :DESTROYED-CONSTANT-ARGS
+;;; Also, an important-result warning could be provided if the array
+;;; is known to be not expressly adjustable.
(defknown adjust-array
(array (or index list) &key (:element-type type-specifier)
(:initial-element t) (:initial-contents t)
(values)
())
(defknown style-warn (string &rest t) null ())
-