X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fsequence.lisp;h=295cc71f37509e20f818612cb6b531c1341c130b;hb=d8422b9967f465801891907396bcc5bfde0f3297;hp=200705faa2cdfa89af0cd49223af58c50f66acd0;hpb=a682f4c392bc874a6a898632889319ebdd8821fc;p=sbcl.git diff --git a/src/pcl/sequence.lisp b/src/pcl/sequence.lisp index 200705f..295cc71 100644 --- a/src/pcl/sequence.lisp +++ b/src/pcl/sequence.lisp @@ -104,7 +104,12 @@ (values iterator limit from-end #'sequence:iterator-step #'sequence:iterator-endp #'sequence:iterator-element #'(setf sequence:iterator-element) - #'sequence:iterator-index #'sequence:iterator-copy)))) + #'sequence:iterator-index #'sequence:iterator-copy))) + (:method ((s t) &key from-end start end) + (declare (ignore from-end start end)) + (error 'type-error + :datum s + :expected-type 'sequence))) ;;; the simple protocol: the simple iterator returns three values, ;;; STATE, LIMIT and FROM-END. @@ -216,7 +221,7 @@ (,setf (new-value) (funcall ,nsetf new-value ,s ,nstate)) (,index () (funcall ,nindex ,s ,nstate)) (,copy () (funcall ,ncopy ,s ,nstate))) - (declare (dynamic-extent #',step #',endp #',elt + (declare (truly-dynamic-extent #',step #',endp #',elt #',setf #',index #',copy)) ,@body)))) @@ -479,7 +484,7 @@ (:argument-precedence-order sequence new old)) (defmethod sequence:substitute (new old (sequence sequence) &rest args &key (start 0) end from-end test test-not count key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore start end from-end test test-not count key)) (let ((result (copy-seq sequence))) (apply #'sequence:nsubstitute new old result args))) @@ -489,7 +494,7 @@ (:argument-precedence-order sequence new predicate)) (defmethod sequence:substitute-if (new predicate (sequence sequence) &rest args &key (start 0) end from-end count key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore start end from-end count key)) (let ((result (copy-seq sequence))) (apply #'sequence:nsubstitute-if new predicate result args))) @@ -500,7 +505,7 @@ (defmethod sequence:substitute-if-not (new predicate (sequence sequence) &rest args &key (start 0) end from-end count key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore start end from-end count key)) (let ((result (copy-seq sequence))) (apply #'sequence:nsubstitute-if-not new predicate result args))) @@ -670,7 +675,7 @@ (replace sequence sequence :start2 end :start1 (- end c) :end1 (- (length sequence) c)))) (sequence:adjust-sequence sequence (- (length sequence) c)))) - (declare (dynamic-extent #'finish)) + (declare (truly-dynamic-extent #'finish)) (do () ((funcall endp2 sequence state2 limit2 from-end2) (finish)) (let ((e (funcall elt2 sequence state2))) @@ -710,7 +715,7 @@ (replace sequence sequence :start2 end :start1 (- end c) :end1 (- (length sequence) c)))) (sequence:adjust-sequence sequence (- (length sequence) c)))) - (declare (dynamic-extent #'finish)) + (declare (truly-dynamic-extent #'finish)) (do () ((funcall endp2 sequence state2 limit2 from-end2) (finish)) (let ((e (funcall elt2 sequence state2))) @@ -750,7 +755,7 @@ (replace sequence sequence :start2 end :start1 (- end c) :end1 (- (length sequence) c)))) (sequence:adjust-sequence sequence (- (length sequence) c)))) - (declare (dynamic-extent #'finish)) + (declare (truly-dynamic-extent #'finish)) (do () ((funcall endp2 sequence state2 limit2 from-end2) (finish)) (let ((e (funcall elt2 sequence state2))) @@ -774,7 +779,7 @@ (:argument-precedence-order sequence item)) (defmethod sequence:remove (item (sequence sequence) &rest args &key from-end test test-not (start 0) end count key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore from-end test test-not start end count key)) (let ((result (copy-seq sequence))) (apply #'sequence:delete item result args))) @@ -784,7 +789,7 @@ (:argument-precedence-order sequence predicate)) (defmethod sequence:remove-if (predicate (sequence sequence) &rest args &key from-end (start 0) end count key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore from-end start end count key)) (let ((result (copy-seq sequence))) (apply #'sequence:delete-if predicate result args))) @@ -794,7 +799,7 @@ (:argument-precedence-order sequence predicate)) (defmethod sequence:remove-if-not (predicate (sequence sequence) &rest args &key from-end (start 0) end count key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore from-end start end count key)) (let ((result (copy-seq sequence))) (apply #'sequence:delete-if-not predicate result args))) @@ -820,7 +825,7 @@ (replace sequence sequence :start2 end :start1 (- end c) :end1 (- (length sequence) c)))) (sequence:adjust-sequence sequence (- (length sequence) c)))) - (declare (dynamic-extent #'finish)) + (declare (truly-dynamic-extent #'finish)) (do ((end (or end (length sequence))) (step 0 (1+ step))) ((funcall endp2 sequence state2 limit2 from-end2) (finish)) @@ -849,14 +854,14 @@ (sequence &key from-end test test-not start end key)) (defmethod sequence:remove-duplicates ((sequence sequence) &rest args &key from-end test test-not (start 0) end key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore from-end test test-not start end key)) (let ((result (copy-seq sequence))) (apply #'sequence:delete-duplicates result args))) (defgeneric sequence:sort (sequence predicate &key key)) (defmethod sequence:sort ((sequence sequence) predicate &rest args &key key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore key)) (let* ((length (length sequence)) (vector (make-array length))) @@ -879,7 +884,7 @@ (defgeneric sequence:stable-sort (sequence predicate &key key)) (defmethod sequence:stable-sort ((sequence sequence) predicate &rest args &key key) - (declare (dynamic-extent args)) + (declare (truly-dynamic-extent args)) (declare (ignore key)) (let* ((length (length sequence)) (vector (make-array length)))