X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fseq.impure.lisp;h=e41d17d76e6d7054fdb2d1a6be71db1202b35bd9;hb=c3699db2053ff3b5ac6a98d4431c3789496002d8;hp=97b7cec337bad5ccca44401e34fe242c8aa13b2f;hpb=1bbb76fcfb9baddf0dc96412c87575d8aeb69c6d;p=sbcl.git diff --git a/tests/seq.impure.lisp b/tests/seq.impure.lisp index 97b7cec..e41d17d 100644 --- a/tests/seq.impure.lisp +++ b/tests/seq.impure.lisp @@ -76,7 +76,7 @@ (when (or warnings-p failure-p) (error "~@" lambda-expr warnings-p failure-p)) - (format t "~&~S ~S ~S ~S ~S~%" + (format t "~&~S ~S~%~S~%~S ~S~%" base-seq snippet seq-type declaredness optimization) (format t "~&(TYPEP SEQ 'SIMPLE-ARRAY)=~S~%" (typep seq 'simple-array)) @@ -299,31 +299,41 @@ ;; MAKE-SEQUENCE (assert-type-error (make-sequence 'cons 0)) (assert-type-error (make-sequence 'null 1)) + (assert-type-error (make-sequence '(cons t null) 0)) + (assert-type-error (make-sequence '(cons t null) 2)) ;; KLUDGE: I'm not certain that this test actually tests for what ;; it should test, in that the type deriver and optimizers might ;; be too smart for the good of an exhaustive test system. ;; However, it makes me feel good. -- CSR, 2002-10-18 (assert (null (make-sequence 'null 0))) (assert (= (length (make-sequence 'cons 3)) 3)) + (assert (= (length (make-sequence '(cons t null) 1)) 1)) ;; and NIL is not a valid type for MAKE-SEQUENCE (assert-type-error (make-sequence 'nil 0)) ;; COERCE (assert-type-error (coerce #(1) 'null)) (assert-type-error (coerce #() 'cons)) + (assert-type-error (coerce #() '(cons t null))) + (assert-type-error (coerce #(1 2) '(cons t null))) (assert (null (coerce #() 'null))) (assert (= (length (coerce #(1) 'cons)) 1)) + (assert (= (length (coerce #(1) '(cons t null))) 1)) (assert-type-error (coerce #() 'nil)) ;; MERGE (assert-type-error (merge 'null '(1 3) '(2 4) '<)) (assert-type-error (merge 'cons () () '<)) (assert (null (merge 'null () () '<))) (assert (= (length (merge 'cons '(1 3) '(2 4) '<)) 4)) + (assert (= (length (merge '(cons t (cons t (cons t (cons t null)))) + '(1 3) '(2 4) '<)) 4)) (assert-type-error (merge 'nil () () '<)) ;; CONCATENATE (assert-type-error (concatenate 'null '(1) "2")) (assert-type-error (concatenate 'cons #() ())) + (assert-type-error (concatenate '(cons t null) #(1 2 3) #(4 5 6))) (assert (null (concatenate 'null () #()))) (assert (= (length (concatenate 'cons #() '(1) "2 3")) 4)) + (assert (= (length (concatenate '(cons t cons) '(1) "34")) 3)) (assert-type-error (concatenate 'nil '(3))) ;; FIXME: tests for MAP to come when some brave soul implements ;; the analogous type checking for MAP/%MAP. @@ -339,6 +349,12 @@ (declare (optimize (safety 3))) (assert (raises-error? (elt (list 1 2 3) 3) type-error))) +;;; confusion in the refactoring led to this signalling an unbound +;;; variable, not a type error. +(defun svrefalike (x) + (svref x 0)) +(assert (raises-error? (svrefalike #*0) type-error)) + ;;; checks for uniform bounding index handling under SAFETY 3 code. ;;; ;;; KLUDGE: not all in one big form because that causes SBCL to spend @@ -357,20 +373,21 @@ (setf (fill-pointer string) 5))) (declare (ignorable #'reset)) ,@body)))) - +(declaim (notinline opaque-identity)) +(defun opaque-identity (x) x) ;;; Accessor SUBSEQ (sequence-bounding-indices-test (format t "~&/Accessor SUBSEQ~%") (assert (string= (subseq string 0 5) "aaaaa")) (assert (raises-error? (subseq string 0 6))) - (assert (raises-error? (subseq string -1 5))) + (assert (raises-error? (subseq string (opaque-identity -1) 5))) (assert (raises-error? (subseq string 4 2))) (assert (raises-error? (subseq string 6))) (assert (string= (setf (subseq string 0 5) "abcde") "abcde")) (assert (string= (subseq string 0 5) "abcde")) (reset) (assert (raises-error? (setf (subseq string 0 6) "abcdef"))) - (assert (raises-error? (setf (subseq string -1 5) "abcdef"))) + (assert (raises-error? (setf (subseq string (opaque-identity -1) 5) "abcdef"))) (assert (raises-error? (setf (subseq string 4 2) ""))) (assert (raises-error? (setf (subseq string 6) "ghij")))) @@ -380,7 +397,7 @@ (assert (= (count #\a string :start 0 :end nil) 5)) (assert (= (count #\a string :start 0 :end 5) 5)) (assert (raises-error? (count #\a string :start 0 :end 6))) - (assert (raises-error? (count #\a string :start -1 :end 5))) + (assert (raises-error? (count #\a string :start (opaque-identity -1) :end 5))) (assert (raises-error? (count #\a string :start 4 :end 2))) (assert (raises-error? (count #\a string :start 6 :end 9))) (assert (= (count-if #'alpha-char-p string :start 0 :end nil) 5)) @@ -388,7 +405,7 @@ (assert (raises-error? (count-if #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (count-if #'alpha-char-p string :start -1 :end 5))) + (count-if #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (count-if #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -398,7 +415,7 @@ (assert (raises-error? (count-if-not #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (count-if-not #'alpha-char-p string :start -1 :end 5))) + (count-if-not #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (count-if-not #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -410,7 +427,7 @@ (assert (string= (fill string #\b :start 0 :end 5) "bbbbb")) (assert (string= (fill string #\c :start 0 :end nil) "ccccc")) (assert (raises-error? (fill string #\d :start 0 :end 6))) - (assert (raises-error? (fill string #\d :start -1 :end 5))) + (assert (raises-error? (fill string #\d :start (opaque-identity -1) :end 5))) (assert (raises-error? (fill string #\d :start 4 :end 2))) (assert (raises-error? (fill string #\d :start 6 :end 9)))) @@ -420,7 +437,7 @@ (assert (char= (find #\a string :start 0 :end nil) #\a)) (assert (char= (find #\a string :start 0 :end 5) #\a)) (assert (raises-error? (find #\a string :start 0 :end 6))) - (assert (raises-error? (find #\a string :start -1 :end 5))) + (assert (raises-error? (find #\a string :start (opaque-identity -1) :end 5))) (assert (raises-error? (find #\a string :start 4 :end 2))) (assert (raises-error? (find #\a string :start 6 :end 9))) (assert (char= (find-if #'alpha-char-p string :start 0 :end nil) #\a)) @@ -428,7 +445,7 @@ (assert (raises-error? (find-if #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (find-if #'alpha-char-p string :start -1 :end 5))) + (find-if #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (find-if #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -438,7 +455,7 @@ (assert (raises-error? (find-if-not #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (find-if-not #'alpha-char-p string :start -1 :end 5))) + (find-if-not #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (find-if-not #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -450,7 +467,7 @@ (assert (null (mismatch string "aaaaa" :start1 0 :end1 nil))) (assert (= (mismatch "aaab" string :start2 0 :end2 4) 3)) (assert (raises-error? (mismatch "aaaaaa" string :start2 0 :end2 6))) - (assert (raises-error? (mismatch string "aaaaaa" :start1 -1 :end1 5))) + (assert (raises-error? (mismatch string "aaaaaa" :start1 (opaque-identity -1) :end1 5))) (assert (raises-error? (mismatch string "" :start1 4 :end1 2))) (assert (raises-error? (mismatch "aaaa" string :start2 6 :end2 9)))) @@ -463,7 +480,7 @@ (assert (= (parse-integer string :start 0 :end 5) 12345)) (assert (= (parse-integer string :start 0 :end nil) 12345)) (assert (raises-error? (parse-integer string :start 0 :end 6))) - (assert (raises-error? (parse-integer string :start -1 :end 5))) + (assert (raises-error? (parse-integer string :start (opaque-identity -1) :end 5))) (assert (raises-error? (parse-integer string :start 4 :end 2))) (assert (raises-error? (parse-integer string :start 6 :end 9)))) @@ -482,7 +499,7 @@ :start 0 :end 6))) (assert (raises-error? (parse-namestring string nil *default-pathname-defaults* - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (assert (raises-error? (parse-namestring string nil *default-pathname-defaults* :start 4 :end 2))) @@ -496,7 +513,7 @@ (assert (= (position #\a string :start 0 :end nil) 0)) (assert (= (position #\a string :start 0 :end 5) 0)) (assert (raises-error? (position #\a string :start 0 :end 6))) - (assert (raises-error? (position #\a string :start -1 :end 5))) + (assert (raises-error? (position #\a string :start (opaque-identity -1) :end 5))) (assert (raises-error? (position #\a string :start 4 :end 2))) (assert (raises-error? (position #\a string :start 6 :end 9))) (assert (= (position-if #'alpha-char-p string :start 0 :end nil) 0)) @@ -504,7 +521,7 @@ (assert (raises-error? (position-if #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (position-if #'alpha-char-p string :start -1 :end 5))) + (position-if #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (position-if #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -514,7 +531,7 @@ (assert (raises-error? (position-if-not #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (position-if-not #'alpha-char-p string :start -1 :end 5))) + (position-if-not #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (position-if-not #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -527,7 +544,7 @@ (assert (equal (read-from-string string nil nil :start 0 :end 5) '(a b))) (assert (equal (read-from-string string nil nil :start 0 :end nil) '(a b))) (assert (raises-error? (read-from-string string nil nil :start 0 :end 6))) - (assert (raises-error? (read-from-string string nil nil :start -1 :end 5))) + (assert (raises-error? (read-from-string string nil nil :start (opaque-identity -1) :end 5))) (assert (raises-error? (read-from-string string nil nil :start 4 :end 2))) (assert (raises-error? (read-from-string string nil nil :start 6 :end 9)))) @@ -540,7 +557,7 @@ (assert (equal (reduce #'list* string :from-end t :start 0 :end 5) '(#\a #\b #\c #\d . #\e))) (assert (raises-error? (reduce #'list* string :start 0 :end 6))) - (assert (raises-error? (reduce #'list* string :start -1 :end 5))) + (assert (raises-error? (reduce #'list* string :start (opaque-identity -1) :end 5))) (assert (raises-error? (reduce #'list* string :start 4 :end 2))) (assert (raises-error? (reduce #'list* string :start 6 :end 9)))) @@ -551,7 +568,7 @@ (assert (equal (remove #\a string :start 0 :end nil) "")) (assert (equal (remove #\a string :start 0 :end 5) "")) (assert (raises-error? (remove #\a string :start 0 :end 6))) - (assert (raises-error? (remove #\a string :start -1 :end 5))) + (assert (raises-error? (remove #\a string :start (opaque-identity -1) :end 5))) (assert (raises-error? (remove #\a string :start 4 :end 2))) (assert (raises-error? (remove #\a string :start 6 :end 9))) (assert (equal (remove-if #'alpha-char-p string :start 0 :end nil) "")) @@ -559,7 +576,7 @@ (assert (raises-error? (remove-if #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (remove-if #'alpha-char-p string :start -1 :end 5))) + (remove-if #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (remove-if #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? @@ -571,11 +588,12 @@ (assert (raises-error? (remove-if-not #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? - (remove-if-not #'alpha-char-p string :start -1 :end 5))) + (remove-if-not #'alpha-char-p string :start (opaque-identity -1) :end 5))) (assert (raises-error? (remove-if-not #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? - (remove-if-not #'alpha-char-p string :start 6 :end 9))) + (remove-if-not #'alpha-char-p string :start 6 :end 9)))) +(sequence-bounding-indices-test (format t "~&/... DELETE, DELETE-IF, DELETE-IF-NOT") (assert (equal (delete #\a string :start 0 :end nil) "")) (reset) @@ -583,7 +601,7 @@ (reset) (assert (raises-error? (delete #\a string :start 0 :end 6))) (reset) - (assert (raises-error? (delete #\a string :start -1 :end 5))) + (assert (raises-error? (delete #\a string :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (delete #\a string :start 4 :end 2))) (reset) @@ -597,7 +615,7 @@ (delete-if #'alpha-char-p string :start 0 :end 6))) (reset) (assert (raises-error? - (delete-if #'alpha-char-p string :start -1 :end 5))) + (delete-if #'alpha-char-p string :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (delete-if #'alpha-char-p string :start 4 :end 2))) @@ -615,7 +633,7 @@ (delete-if-not #'alpha-char-p string :start 0 :end 6))) (reset) (assert (raises-error? - (delete-if-not #'alpha-char-p string :start -1 :end 5))) + (delete-if-not #'alpha-char-p string :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (delete-if-not #'alpha-char-p string :start 4 :end 2))) @@ -629,7 +647,7 @@ (assert (string= (remove-duplicates string :start 0 :end 5) "a")) (assert (string= (remove-duplicates string :start 0 :end nil) "a")) (assert (raises-error? (remove-duplicates string :start 0 :end 6))) - (assert (raises-error? (remove-duplicates string :start -1 :end 5))) + (assert (raises-error? (remove-duplicates string :start (opaque-identity -1) :end 5))) (assert (raises-error? (remove-duplicates string :start 4 :end 2))) (assert (raises-error? (remove-duplicates string :start 6 :end 9))) (assert (string= (delete-duplicates string :start 0 :end 5) "a")) @@ -638,7 +656,7 @@ (reset) (assert (raises-error? (delete-duplicates string :start 0 :end 6))) (reset) - (assert (raises-error? (delete-duplicates string :start -1 :end 5))) + (assert (raises-error? (delete-duplicates string :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (delete-duplicates string :start 4 :end 2))) (reset) @@ -652,7 +670,7 @@ string :start2 0 :end2 nil) "bbbbb")) (assert (raises-error? (replace string "ccccc" :start1 0 :end1 6))) - (assert (raises-error? (replace string "ccccc" :start2 -1 :end2 5))) + (assert (raises-error? (replace string "ccccc" :start2 (opaque-identity -1) :end2 5))) (assert (raises-error? (replace string "ccccc" :start1 4 :end1 2))) (assert (raises-error? (replace string "ccccc" :start1 6 :end1 9)))) @@ -662,58 +680,61 @@ (assert (= (search "aa" string :start2 0 :end2 5) 0)) (assert (null (search string "aa" :start1 0 :end2 nil))) (assert (raises-error? (search "aa" string :start2 0 :end2 6))) - (assert (raises-error? (search "aa" string :start2 -1 :end2 5))) + (assert (raises-error? (search "aa" string :start2 (opaque-identity -1) :end2 5))) (assert (raises-error? (search "aa" string :start2 4 :end2 2))) (assert (raises-error? (search "aa" string :start2 6 :end2 9)))) ;;; Function STRING-UPCASE, STRING-DOWNCASE, STRING-CAPITALIZE, ;;; NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE +(defmacro string-case-frob (fn) + `(progn + (assert (raises-error? (,fn string :start 0 :end 6))) + (assert (raises-error? (,fn string :start (opaque-identity -1) :end 5))) + (assert (raises-error? (,fn string :start 4 :end 2))) + (assert (raises-error? (,fn string :start 6 :end 9))))) + (sequence-bounding-indices-test - (macrolet ((frob (fn) - `(progn - (assert (raises-error? (,fn string :start 0 :end 6))) - (assert (raises-error? (,fn string :start -1 :end 5))) - (assert (raises-error? (,fn string :start 4 :end 2))) - (assert (raises-error? (,fn string :start 6 :end 9)))))) - (format t "~&/Function STRING-UPCASE, STRING-DOWNCASE, STRING-CAPITALIZE, ...~%") - (frob string-upcase) - (frob string-downcase) - (frob string-capitalize) - (format t "~&/... NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE~%") - (frob nstring-upcase) - (frob nstring-downcase) - (frob nstring-capitalize))) + (format t "~&/Function STRING-UPCASE, STRING-DOWNCASE, STRING-CAPITALIZE, ...~%") + (string-case-frob string-upcase) + (string-case-frob string-downcase) + (string-case-frob string-capitalize) + (format t "~&/... NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE~%") + (string-case-frob nstring-upcase) + (string-case-frob nstring-downcase) + (string-case-frob nstring-capitalize)) ;;; Function STRING=, STRING/=, STRING<, STRING>, STRING<=, STRING>=, ;;; STRING-EQUAL, STRING-NOT-EQUAL, STRING-LESSP, STRING-GREATERP, ;;; STRING-NOT-GREATERP, STRING-NOT-LESSP +(defmacro string-predicate-frob (fn) + `(progn + (,fn string "abcde" :start1 0 :end1 5) + (,fn "fghij" string :start2 0 :end2 nil) + (assert (raises-error? (,fn string "klmno" + :start1 0 :end1 6))) + (assert (raises-error? (,fn "pqrst" string + :start2 (opaque-identity -1) :end2 5))) + (assert (raises-error? (,fn "uvwxy" string + :start1 4 :end1 2))) + (assert (raises-error? (,fn string "z" :start2 6 :end2 9))))) (sequence-bounding-indices-test - (macrolet ((frob (fn) - `(progn - (,fn string "abcde" :start1 0 :end1 5) - (,fn "fghij" string :start2 0 :end2 nil) - (assert (raises-error? (,fn string "klmno" - :start1 0 :end1 6))) - (assert (raises-error? (,fn "pqrst" string - :start2 -1 :end2 5))) - (assert (raises-error? (,fn "uvwxy" string - :start1 4 :end1 2))) - (assert (raises-error? (,fn string "z" :start2 6 :end2 9)))))) - (format t "~&/Function STRING=, STRING/=, STRING<, STRING>, STRING<=, STRING>=, ...") - (frob string=) - (frob string/=) - (frob string<) - (frob string>) - (frob string<=) - (frob string>=) - (format t "~&/... STRING-EQUAL, STRING-NOT-EQUAL, STRING-LESSP, ...~%") - (frob string-equal) - (frob string-not-equal) - (frob string-lessp) - (format t "~&/... STRING-GREATERP, STRING-NOT-GREATERP, STRING-NOT-LESSP~%") - (frob string-greaterp) - (frob string-not-greaterp) - (frob string-not-lessp))) + (format t "~&/Function STRING=, STRING/=, STRING<, STRING>, STRING<=, STRING>=, ...") + (string-predicate-frob string=) + (string-predicate-frob string/=) + (string-predicate-frob string<) + (string-predicate-frob string>) + (string-predicate-frob string<=) + (string-predicate-frob string>=)) +(sequence-bounding-indices-test + (format t "~&/... STRING-EQUAL, STRING-NOT-EQUAL, STRING-LESSP, ...~%") + (string-predicate-frob string-equal) + (string-predicate-frob string-not-equal) + (string-predicate-frob string-lessp)) +(sequence-bounding-indices-test + (format t "~&/... STRING-GREATERP, STRING-NOT-GREATERP, STRING-NOT-LESSP~%") + (string-predicate-frob string-greaterp) + (string-predicate-frob string-not-greaterp) + (string-predicate-frob string-not-lessp)) ;;; Function SUBSTITUTE, SUBSTITUTE-IF, SUBSTITUTE-IF-NOT, ;;; NSUBSTITUTE, NSUBSTITUTE-IF, NSUBSTITUTE-IF-NOT @@ -723,7 +744,7 @@ (assert (string= (substitute #\c #\a string :start 0 :end nil) "ccccc")) (assert (raises-error? (substitute #\b #\a string :start 0 :end 6))) - (assert (raises-error? (substitute #\b #\a string :start -1 :end 5))) + (assert (raises-error? (substitute #\b #\a string :start (opaque-identity -1) :end 5))) (assert (raises-error? (substitute #\b #\a string :start 4 :end 2))) (assert (raises-error? (substitute #\b #\a string :start 6 :end 9))) (assert (string= (substitute-if #\b #'alpha-char-p string @@ -735,7 +756,7 @@ (assert (raises-error? (substitute-if #\b #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? (substitute-if #\b #'alpha-char-p string - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (assert (raises-error? (substitute-if #\b #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? (substitute-if #\b #'alpha-char-p string @@ -749,11 +770,12 @@ (assert (raises-error? (substitute-if-not #\b #'alpha-char-p string :start 0 :end 6))) (assert (raises-error? (substitute-if-not #\b #'alpha-char-p string - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (assert (raises-error? (substitute-if-not #\b #'alpha-char-p string :start 4 :end 2))) (assert (raises-error? (substitute-if-not #\b #'alpha-char-p string - :start 6 :end 9))) + :start 6 :end 9)))) +(sequence-bounding-indices-test (format t "~&/... NSUBSTITUTE, NSUBSTITUTE-IF, NSUBSTITUTE-IF-NOT~%") (assert (string= (nsubstitute #\b #\a string :start 0 :end 5) "bbbbb")) (reset) @@ -762,7 +784,7 @@ (reset) (assert (raises-error? (nsubstitute #\b #\a string :start 0 :end 6))) (reset) - (assert (raises-error? (nsubstitute #\b #\a string :start -1 :end 5))) + (assert (raises-error? (nsubstitute #\b #\a string :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (nsubstitute #\b #\a string :start 4 :end 2))) (reset) @@ -780,7 +802,7 @@ :start 0 :end 6))) (reset) (assert (raises-error? (nsubstitute-if #\b #'alpha-char-p string - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (nsubstitute-if #\b #'alpha-char-p string :start 4 :end 2))) @@ -800,7 +822,7 @@ :start 0 :end 6))) (reset) (assert (raises-error? (nsubstitute-if-not #\b #'alpha-char-p string - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (reset) (assert (raises-error? (nsubstitute-if-not #\b #'alpha-char-p string :start 4 :end 2))) @@ -815,7 +837,7 @@ (assert (raises-error? (write-string string *standard-output* :start 0 :end 6))) (assert (raises-error? (write-string string *standard-output* - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (assert (raises-error? (write-string string *standard-output* :start 4 :end 2))) (assert (raises-error? (write-string string *standard-output* @@ -825,7 +847,7 @@ (assert (raises-error? (write-line string *standard-output* :start 0 :end 6))) (assert (raises-error? (write-line string *standard-output* - :start -1 :end 5))) + :start (opaque-identity -1) :end 5))) (assert (raises-error? (write-line string *standard-output* :start 4 :end 2))) (assert (raises-error? (write-line string *standard-output* @@ -842,7 +864,7 @@ (with-input-from-string (s string :start 0 :end 6) (read-char s)))) (assert (raises-error? - (with-input-from-string (s string :start -1 :end 5) + (with-input-from-string (s string :start (opaque-identity -1) :end 5) (read-char s)))) (assert (raises-error? (with-input-from-string (s string :start 4 :end 2)