>From b8c54b1d41dceb628bd5e298facf2c78cc1e334a Mon Sep 17 00:00:00 2001
From: Evan Hanson
Date: Mon, 27 Jan 2014 11:37:37 +1300
Subject: [PATCH 1/2] Add distinct boolean subtypes for true and false
Fixes #847.
---
NEWS | 2 +
manual/Types | 4 +-
scrutinizer.scm | 19 ++++++---
tests/typematch-tests.scm | 17 ++++++--
types.db | 96 ++++++++++++++++++++++-----------------------
5 files changed, 80 insertions(+), 58 deletions(-)
diff --git a/NEWS b/NEWS
index ed114c6..5b04028 100644
--- a/NEWS
+++ b/NEWS
@@ -27,6 +27,8 @@
- Possible race condition while handling TCP errors has been fixed.
- The posix unit will no longer hang upon any error in Windows.
- resize-vector no longer crashes when reducing the size of the vector.
+ - Distinct types for boolean true and false have been added to the
+ scrutinizer.
- Platform support
- CHICKEN can now be built on AIX (contributed by Erik Falor)
diff --git a/manual/Types b/manual/Types
index 7e0aa0b..93cdd0f 100644
--- a/manual/Types
+++ b/manual/Types
@@ -112,9 +112,10 @@ or {{:}} should follow the syntax given below:
BASICTYPE | meaning |
{{*}} | any value |
{{blob}} | byte vector |
-{{boolean}} | boolean |
+{{boolean}} | true or false |
{{char}} | character |
{{eof}} | end-of-file object |
+{{false}} | boolean false |
{{fixnum}} | word-sized integer |
{{float}} | floating-point number |
{{list}} | null or pair |
@@ -128,6 +129,7 @@ or {{:}} should follow the syntax given below:
{{procedure}} | unspecific procedure |
{{string}} | string |
{{symbol}} | symbol |
+{{true}} | boolean true |
{{vector}} | vector |
diff --git a/scrutinizer.scm b/scrutinizer.scm
index 695a757..77d9de2 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -68,7 +68,7 @@
; | (forall (TVAR1 ...) VAL)
; | deprecated
; | (deprecated NAME)
-; BASIC = * | string | symbol | char | number | boolean | list | pair |
+; BASIC = * | string | symbol | char | number | boolean | true | false | list | pair |
; procedure | vector | null | eof | undefined | input-port | output-port |
; blob | noreturn | pointer | locative | fixnum | float |
; pointer-vector
@@ -141,7 +141,8 @@
((fixnum) 'fixnum)
((flonum) 'flonum)
(else 'number))) ; in case...
- ((boolean? lit) 'boolean)
+ ((boolean? lit)
+ (if lit 'true 'false))
((null? lit) 'null)
((list? lit)
`(list ,@(map constant-result lit)))
@@ -207,7 +208,7 @@
((or) (every always-true1 (cdr t)))
((forall) (always-true1 (third t)))
(else #t)))
- ((memq t '(* boolean undefined noreturn)) #f)
+ ((memq t '(* boolean true false undefined noreturn)) #f)
(else #t)))
(define (always-true t loc x)
@@ -1105,6 +1106,12 @@
(match1 t1 (third t2))) ; assumes typeenv has already been extracted
((eq? t1 'noreturn) (not exact))
((eq? t2 'noreturn) (not exact))
+ ((eq? t1 'boolean)
+ (and (not exact)
+ (match1 '(or true false) t2)))
+ ((eq? t2 'boolean)
+ (and (not exact)
+ (match1 t1 '(or true false))))
((eq? t1 'number)
(and (not exact)
(match1 '(or fixnum float) t2)))
@@ -1317,6 +1324,7 @@
(merge-result-types rtypes1 rtypes2))))
#f
ts)))
+ ((lset= eq? '(true false) ts) 'boolean)
((lset= eq? '(fixnum float) ts) 'number)
(else
(let* ((ts (append-map
@@ -1475,6 +1483,7 @@
(else
(case t2
((procedure) (and (pair? t1) (eq? 'procedure (car t1))))
+ ((boolean) (memq t1 '(true false)))
((number) (memq t1 '(fixnum float)))
((vector) (test t1 '(vector-of *)))
((list) (test t1 '(list-of *)))
@@ -1767,7 +1776,7 @@
((not (pair? t))
(if (memq t '(* fixnum eof char string symbol float number list vector pair
undefined blob input-port output-port pointer locative boolean
- pointer-vector null procedure noreturn))
+ true false pointer-vector null procedure noreturn))
t
(bomb "resolve: can't resolve unknown type-variable" t)))
(else
@@ -1974,7 +1983,7 @@
(l2 (validate-llist (cdr llist))))
(and l1 l2 (cons l1 l2))))))
(define (validate t #!optional (rec #t))
- (cond ((memq t '(* string symbol char number boolean list pair
+ (cond ((memq t '(* string symbol char number boolean true false list pair
procedure vector null eof undefined input-port output-port
blob pointer locative fixnum float pointer-vector
deprecated noreturn values))
diff --git a/tests/typematch-tests.scm b/tests/typematch-tests.scm
index b5d9d94..bbd5a3c 100644
--- a/tests/typematch-tests.scm
+++ b/tests/typematch-tests.scm
@@ -103,7 +103,8 @@
(check "abc" 1.2 string)
(check 'abc 1.2 symbol)
(check #\x 1.2 char)
-(check #t 1.2 boolean)
+(check #t #f true)
+(check #f #t false)
(check (+ 1 2) 'a number)
(check '(1) 1.2 (list fixnum))
(check '(a) 1.2 (list symbol))
@@ -126,7 +127,8 @@
(ms "abc" 1.2 string)
(ms 'abc 1.2 symbol)
(ms #\x 1.2 char)
-(ms #t 1.2 boolean)
+(ms #t #f true)
+(ms #f #t false)
(ms '(1) 1.2 (list fixnum))
(ms '(1 . 2) '() pair)
(ms + 1.2 procedure)
@@ -147,8 +149,8 @@
(define n 1)
-(checkp boolean? #t boolean)
-(checkp boolean? #f boolean)
+(checkp boolean? #t true)
+(checkp boolean? #f false)
(checkp pair? '(1 . 2) pair)
(checkp null? '() null)
(checkp symbol? 'a symbol)
@@ -248,6 +250,13 @@
(float 'float)
(number 'number))))
+(assert
+ (eq? 'boolean
+ (compiler-typecase (vector-ref '#(#t #f) x)
+ (true 'true)
+ (false 'false)
+ (boolean 'boolean))))
+
(mx float (vector-ref '#(1 2 3.4) 2))
(mx fixnum (vector-ref '#(1 2 3.4) 0))
(mx float (##sys#vector-ref '#(1 2 3.4) 2))
diff --git a/types.db b/types.db
index d1aaa06..af13b12 100644
--- a/types.db
+++ b/types.db
@@ -172,27 +172,27 @@
(reverse (forall (a) (#(procedure #:clean #:enforce) reverse ((list-of a)) (list-of a))))
-(memq (forall (a b) (#(procedure #:clean) memq (a (list-of b)) (or boolean (list-of b))))
+(memq (forall (a b) (#(procedure #:clean) memq (a (list-of b)) (or false (list-of b))))
((* list) (##core#inline "C_u_i_memq" #(1) #(2))))
-(memv (forall (a b) (#(procedure #:clean) memv (a (list-of b)) (or boolean (list-of b))))
+(memv (forall (a b) (#(procedure #:clean) memv (a (list-of b)) (or false (list-of b))))
(((or symbol procedure immediate) list)
(##core#inline "C_u_i_memq" #(1) #(2))))
(member (forall (a b) (#(procedure #:clean) member
(a (list-of b) #!optional (procedure (b a) *)) ; sic
- (or boolean (list-of b))))
+ (or false (list-of b))))
(((or symbol procedure immediate) list)
(##core#inline "C_u_i_memq" #(1) #(2)))
((* (list-of (or symbol procedure immediate)))
(##core#inline "C_u_i_memq" #(1) #(2))))
(assq (forall (a b) (#(procedure #:clean) assq (* (list-of (pair a b)))
- (or boolean (pair a b))))
+ (or false (pair a b))))
((* (list-of pair)) (##core#inline "C_u_i_assq" #(1) #(2))))
(assv (forall (a b) (#(procedure #:clean) assv (* (list-of (pair a b)))
- (or boolean (pair a b))))
+ (or false (pair a b))))
(((or symbol immediate procedure) (list-of pair))
(##core#inline "C_u_i_assq" #(1) #(2)))
((* (list-of (pair (or symbol procedure immediate) *)))
@@ -200,7 +200,7 @@
(assoc (forall (a b c) (#(procedure #:clean) assoc (a (list-of (pair b c))
#!optional (procedure (b a) *)) ; sic
- (or boolean (pair b c))))
+ (or false (pair b c))))
(((or symbol procedure immediate) (list-of pair))
(##core#inline "C_u_i_assq" #(1) #(2)))
((* (list-of (pair (or symbol procedure immediate) *)))
@@ -493,7 +493,7 @@
((fixnum) (##sys#fixnum->string #(1))))
(string->number (#(procedure #:clean #:enforce) string->number (string #!optional fixnum)
- (or number boolean)))
+ (or number false)))
(char? (#(procedure #:pure #:predicate char) char? (*) boolean))
@@ -815,8 +815,8 @@
(extension-information (#(procedure #:clean) extension-information (symbol) *))
(feature? (#(procedure #:clean) feature? (#!rest symbol) boolean))
(features (#(procedure #:clean) features () (list-of symbol)))
-(file-exists? (#(procedure #:clean #:enforce) file-exists? (string) (or boolean string)))
-(directory-exists? (#(procedure #:clean #:enforce) directory-exists? (string) (or boolean string)))
+(file-exists? (#(procedure #:clean #:enforce) file-exists? (string) (or false string)))
+(directory-exists? (#(procedure #:clean #:enforce) directory-exists? (string) (or false string)))
(finite? (#(procedure #:clean #:enforce) finite? (number) boolean)
((fixnum) (let ((#(tmp) #(1))) '#t))
@@ -1049,7 +1049,7 @@
(set-parameterized-read-syntax!
(#(procedure #:clean #:enforce) set-parameterized-read-syntax!
- (char (or boolean (procedure (input-port fixnum) . *)))
+ (char (or false (procedure (input-port fixnum) . *)))
undefined))
(set-port-name! (#(procedure #:clean #:enforce) set-port-name! (port string) undefined)
@@ -1057,12 +1057,12 @@
(set-read-syntax!
(#(procedure #:clean #:enforce) set-read-syntax!
- (char (or boolean (procedure (input-port) . *)))
+ (char (or false (procedure (input-port) . *)))
undefined))
(set-sharp-read-syntax!
(#(procedure #:clean #:enforce) set-sharp-read-syntax!
- (char (or boolean (procedure (input-port) . *))) undefined))
+ (char (or false (procedure (input-port) . *))) undefined))
(setter (#(procedure #:clean #:enforce) setter (procedure) procedure))
(signal (procedure signal (*) . *))
@@ -1110,7 +1110,7 @@
((string) #(1)))
(##sys#foreign-symbol-argument (#(procedure #:clean #:enforce) ##sys#foreign-symbol-argument (symbol) symbol)
((symbol) #(1)))
-(##sys#foreign-pointer-argument (#(procedure #:clean #:enforce) ##sys#foreign-pointer-argument (pointer) pointer)
+(##sys#foreign-pointer-argument (#(procedure #:clean #:enforce) ##sys#foreign-pointer-argument ((or pointer false)) pointer)
((pointer) #(1)))
(##sys#check-blob (#(procedure #:clean #:enforce) ##sys#check-blob (blob #!optional *) *)
@@ -1274,11 +1274,11 @@
(string-translate* (#(procedure #:clean #:enforce) string-translate* (string (list-of (pair string string))) string))
(substring-ci=? (#(procedure #:clean #:enforce) substring-ci=? (string string #!optional fixnum fixnum fixnum) boolean))
-(substring-index (#(procedure #:clean #:enforce) substring-index (string string #!optional fixnum) (or boolean fixnum))
+(substring-index (#(procedure #:clean #:enforce) substring-index (string string #!optional fixnum) (or false fixnum))
((* *) (##sys#substring-index #(1) #(2) '0))
((* * *) (##sys#substring-index #(1) #(2) #(3))))
-(substring-index-ci (#(procedure #:clean #:enforce) substring-index-ci (string string #!optional fixnum) (or boolean fixnum))
+(substring-index-ci (#(procedure #:clean #:enforce) substring-index-ci (string string #!optional fixnum) (or false fixnum))
((* *) (##sys#substring-index-ci #(1) #(2) '0))
((* * *) (##sys#substring-index-ci #(1) #(2) #(3))))
@@ -1299,7 +1299,7 @@
(read-buffered (#(procedure #:enforce) read-buffered (#!optional input-port) string))
(read-byte (#(procedure #:enforce) read-byte (#!optional input-port) *))
(read-file (#(procedure #:enforce) read-file (#!optional (or input-port string) (procedure (input-port) *) fixnum) list))
-(read-line (#(procedure #:enforce) read-line (#!optional input-port (or boolean fixnum)) (or eof string)))
+(read-line (#(procedure #:enforce) read-line (#!optional input-port (or false fixnum)) (or eof string)))
(read-lines (#(procedure #:enforce) read-lines (#!optional (or input-port string) fixnum) (list-of string)))
(read-string (#(procedure #:enforce) read-string (#!optional * input-port) string))
(read-string! (#(procedure #:enforce) read-string! (fixnum string #!optional input-port fixnum) fixnum))
@@ -1315,7 +1315,7 @@
(delete-file* (#(procedure #:clean #:enforce) delete-file* (string) *))
(file-copy (#(procedure #:clean #:enforce) file-copy (string string #!optional * fixnum) fixnum))
(file-move (#(procedure #:clean #:enforce) file-move (string string #!optional * fixnum) fixnum))
-(make-pathname (#(procedure #:clean #:enforce) make-pathname (* #!optional (or string boolean) (or string boolean)) string))
+(make-pathname (#(procedure #:clean #:enforce) make-pathname (* #!optional (or string false) (or string false)) string))
(directory-null? (#(procedure #:clean #:enforce) directory-null? (string) boolean))
(make-absolute-pathname (#(procedure #:clean #:enforce) make-absolute-pathname (* #!optional string string) string))
(create-temporary-directory (#(procedure #:clean #:enforce) create-temporary-directory () string))
@@ -1345,15 +1345,15 @@
;; the car of each list is a number (for init-state), false or an alist;
;; the cdr is a list of alists, which contains a char (or vector) and two alists
;; These alists have types themselves, of course...
-(irregex-dfa (#(procedure #:clean #:enforce) irregex-dfa ((struct regexp)) (or boolean vector))
+(irregex-dfa (#(procedure #:clean #:enforce) irregex-dfa ((struct regexp)) (or false vector))
(((struct regexp)) (##sys#slot #(1) '1)))
-(irregex-dfa/search (#(procedure #:clean #:enforce) irregex-dfa/search ((struct regexp)) (or boolean vector))
+(irregex-dfa/search (#(procedure #:clean #:enforce) irregex-dfa/search ((struct regexp)) (or false vector))
(((struct regexp)) (##sys#slot #(1) '2)))
;; Procedure type returned by irregex-nfa is a matcher type (it is misnamed)
;; which is another complex procedure type.
-(irregex-nfa (#(procedure #:clean #:enforce) irregex-nfa ((struct regexp)) (or boolean procedure))
+(irregex-nfa (#(procedure #:clean #:enforce) irregex-nfa ((struct regexp)) (or false procedure))
(((struct regexp)) (##sys#slot #(1) '3)))
(irregex-flags (#(procedure #:clean #:enforce) irregex-flags ((struct regexp)) fixnum)
@@ -1364,7 +1364,7 @@
(((struct regexp)) (##sys#slot #(1) '5)))
(irregex-lengths (#(procedure #:clean #:enforce) irregex-lengths ((struct regexp))
- (vector-of (or boolean pair)))
+ (vector-of (or false pair)))
(((struct regexp)) (##sys#slot #(1) '6)))
;; XXX: Submatch names ought to be symbols according to the docs, but this is
@@ -1393,11 +1393,11 @@
((* string fixnum fixnum) (and (irregex-match #(1) #(2) #(3) #(4)) '#t)))
;; These two return #f or a match object
(irregex-match (#(procedure #:clean #:enforce) irregex-match (* string #!optional fixnum fixnum)
- (or boolean (struct regexp-match))))
+ (or false (struct regexp-match))))
;; XXX chunker is a plain vector
;; Not marked clean because we don't know what chunker procedures will do
(irregex-match/chunked (#(procedure #:enforce) irregex-match/chunked (* vector * #!optional fixnum)
- (or boolean (struct regexp-match))))
+ (or false (struct regexp-match))))
(irregex-match-data? (#(procedure #:pure #:predicate (struct regexp-match)) irregex-match-data? (*) boolean))
@@ -1426,12 +1426,12 @@
;; These return #f or a match object
(irregex-search (#(procedure #:clean #:enforce) irregex-search (* string #!optional fixnum fixnum)
- (or boolean (struct regexp-match))))
+ (or false (struct regexp-match))))
;; XXX chunker is a plain vector
(irregex-search/chunked (#(procedure #:enforce) irregex-search/chunked (* vector * #!optional fixnum *)
- (or boolean (struct regexp-match))))
+ (or false (struct regexp-match))))
(irregex-search/matches (#(procedure #:enforce) irregex-search/matches (* vector * * fixnum (struct regexp-match))
- (or boolean (struct regexp-match))))
+ (or false (struct regexp-match))))
(irregex-match-valid-index?
(#(procedure #:clean #:enforce) irregex-match-valid-index? ((struct regexp-match) *) boolean))
@@ -1464,7 +1464,7 @@
((or number pointer locative procedure port))
(or pointer number)))
-(allocate (#(procedure #:clean #:enforce) allocate (fixnum) (or boolean pointer)))
+(allocate (#(procedure #:clean #:enforce) allocate (fixnum) (or false pointer)))
(block-ref (#(procedure #:clean #:enforce) block-ref (* fixnum) *))
(block-set! (#(procedure #:enforce) block-set! (* fixnum *) *))
(extend-procedure (#(procedure #:clean #:enforce) extend-procedure (procedure *) procedure))
@@ -1475,7 +1475,7 @@
(locative-set! (#(procedure #:enforce) locative-set! (locative *) *))
(locative? (#(procedure #:pure #:predicate locative) locative? (*) boolean))
(make-locative (#(procedure #:clean #:enforce) make-locative (* #!optional fixnum) locative))
-(make-pointer-vector (#(procedure #:clean #:enforce) make-pointer-vector (fixnum #!optional pointer) pointer-vector))
+(make-pointer-vector (#(procedure #:clean #:enforce) make-pointer-vector (fixnum #!optional (or pointer false)) pointer-vector))
(make-record-instance (#(procedure #:clean) make-record-instance (symbol #!rest) *))
(make-weak-locative (#(procedure #:clean #:enforce) make-weak-locative (* #!optional fixnum) locative))
@@ -1534,13 +1534,13 @@
(pointer-vector? (#(procedure #:pure #:predicate pointer-vector) pointer-vector? (*) boolean))
-(pointer-vector-fill! (#(procedure #:clean #:enforce) pointer-vector-fill! (pointer-vector pointer) undefined))
+(pointer-vector-fill! (#(procedure #:clean #:enforce) pointer-vector-fill! (pointer-vector (or pointer false)) undefined))
(pointer-vector-length (#(procedure #:clean #:enforce) pointer-vector-length (pointer-vector) fixnum)
((pointer-vector) (##sys#slot #(1) '1)))
-(pointer-vector-ref (#(procedure #:clean #:enforce) pointer-vector-ref (pointer-vector fixnum) pointer))
-(pointer-vector-set! (#(procedure #:clean #:enforce) pointer-vector-set! (pointer-vector fixnum pointer) undefined))
+(pointer-vector-ref (#(procedure #:clean #:enforce) pointer-vector-ref (pointer-vector fixnum) (or pointer false)))
+(pointer-vector-set! (#(procedure #:clean #:enforce) pointer-vector-set! (pointer-vector fixnum (or pointer false)) undefined))
(pointer-s16-ref (#(procedure #:clean #:enforce) pointer-s16-ref (pointer) fixnum))
(pointer-s16-set! (#(procedure #:clean #:enforce) pointer-s16-set! (pointer fixnum) undefined))
(pointer-s32-ref (#(procedure #:clean #:enforce) pointer-s32-ref (pointer) number))
@@ -1548,7 +1548,7 @@
(pointer-s8-ref (#(procedure #:clean #:enforce) pointer-s8-ref (pointer) fixnum))
(pointer-s8-set! (#(procedure #:clean #:enforce) pointer-s8-set! (pointer fixnum) undefined))
-(pointer-tag (#(procedure #:clean #:enforce) pointer-tag ((or pointer locative procedure port)) (or boolean number))
+(pointer-tag (#(procedure #:clean #:enforce) pointer-tag ((or pointer locative procedure port)) (or false number))
(((or locative procedure port)) (let ((#(tmp) #(1))) '#f)))
(pointer-u16-ref (#(procedure #:clean #:enforce) pointer-u16-ref (pointer) fixnum))
@@ -1698,7 +1698,7 @@
(file-position (#(procedure #:clean #:enforce) file-position ((or port fixnum)) fixnum))
(file-read (#(procedure #:clean #:enforce) file-read (fixnum fixnum #!optional *) list))
(file-read-access? (#(procedure #:clean #:enforce) file-read-access? (string) boolean))
-(file-select (#(procedure #:clean #:enforce) file-select ((or (list-of fixnum) fixnum boolean) (or (list-of fixnum) fixnum boolean) #!optional fixnum) * *))
+(file-select (#(procedure #:clean #:enforce) file-select ((or (list-of fixnum) fixnum false) (or (list-of fixnum) fixnum false) #!optional fixnum) * *))
(file-size (#(procedure #:clean #:enforce) file-size ((or string fixnum)) number))
(file-stat (#(procedure #:clean #:enforce) file-stat ((or string fixnum) #!optional *) (vector-of number)))
(file-test-lock (#(procedure #:clean #:enforce) file-test-lock (port #!optional fixnum *) boolean))
@@ -1769,7 +1769,7 @@
(process-execute
(#(procedure #:clean #:enforce) process-execute (string #!optional (list-of string) (list-of string)) noreturn))
-(process-fork (#(procedure #:enforce) process-fork (#!optional (or (procedure () . *) boolean) *) fixnum))
+(process-fork (#(procedure #:enforce) process-fork (#!optional (or (procedure () . *) false) *) fixnum))
(process-group-id (#(procedure #:clean #:enforce) process-group-id () fixnum))
(process-run (#(procedure #:clean #:enforce) process-run (string #!optional (list-of string)) fixnum))
@@ -1792,10 +1792,10 @@
(set-file-position! (#(procedure #:clean #:enforce) set-file-position! ((or port fixnum) fixnum #!optional fixnum) undefined))
(set-groups! (#(procedure #:clean #:enforce) set-groups! ((list-of fixnum)) undefined))
(set-root-directory! (#(procedure #:clean #:enforce) set-root-directory! (string) undefined))
-(set-signal-handler! (#(procedure #:clean #:enforce) set-signal-handler! (fixnum (or boolean (procedure (fixnum) . *))) undefined))
+(set-signal-handler! (#(procedure #:clean #:enforce) set-signal-handler! (fixnum (or false (procedure (fixnum) . *))) undefined))
(set-signal-mask! (#(procedure #:clean #:enforce) set-signal-mask! ((list-of fixnum)) undefined))
(setenv (#(procedure #:clean #:enforce) setenv (string string) undefined))
-(signal-handler (#(procedure #:clean #:enforce) signal-handler (fixnum) (or boolean (procedure (fixnum) . *))))
+(signal-handler (#(procedure #:clean #:enforce) signal-handler (fixnum) (or false (procedure (fixnum) . *))))
(signal-mask (#(procedure #:clean) signal-mask () fixnum))
(signal-mask! (#(procedure #:clean #:enforce) signal-mask! (fixnum) undefined))
(signal-masked? (#(procedure #:clean #:enforce) signal-masked? (fixnum) boolean))
@@ -2103,8 +2103,8 @@
(string-concatenate-reverse (#(procedure #:clean #:enforce) string-concatenate-reverse ((list-of string) #!optional string fixnum) string))
(string-concatenate-reverse/shared (#(procedure #:clean #:enforce) string-concatenate-reverse/shared ((list-of string) #!optional string fixnum) string))
(string-concatenate/shared (#(procedure #:clean #:enforce) string-concatenate/shared ((list-of string)) string))
-(string-contains (#(procedure #:clean #:enforce) string-contains (string string #!optional fixnum fixnum fixnum fixnum) (or fixnum boolean)))
-(string-contains-ci (#(procedure #:clean #:enforce) string-contains-ci (string string #!optional fixnum fixnum fixnum fixnum) (or fixnum boolean)))
+(string-contains (#(procedure #:clean #:enforce) string-contains (string string #!optional fixnum fixnum fixnum fixnum) (or fixnum false)))
+(string-contains-ci (#(procedure #:clean #:enforce) string-contains-ci (string string #!optional fixnum fixnum fixnum fixnum) (or fixnum false)))
(string-copy (#(procedure #:clean #:enforce) string-copy (string #!optional fixnum fixnum) string))
(string-copy! (#(procedure #:clean #:enforce) string-copy! (string fixnum string #!optional fixnum fixnum) undefined))
(string-count (#(procedure #:clean #:enforce) string-count (string * #!optional fixnum fixnum) fixnum))
@@ -2138,13 +2138,13 @@
(#(procedure #:enforce)
string-index
(string (or char (struct char-set) (procedure (char) *)) #!optional fixnum fixnum)
- (or fixnum boolean)))
+ (or fixnum false)))
(string-index-right
(#(procedure #:enforce)
string-index-right
(string (or char (struct char-set) (procedure (char) *)) #!optional fixnum fixnum)
- (or fixnum boolean)))
+ (or fixnum false)))
(string-join (#(procedure #:clean #:enforce) string-join (list #!optional string symbol) string))
(string-kmp-partial-search (#(procedure #:enforce) string-kmp-partial-search (string vector string fixnum #!optional (procedure (char char) *) fixnum fixnum fixnum) fixnum))
@@ -2170,13 +2170,13 @@
(#(procedure #:enforce)
string-skip
(string (or char (struct char-set) (procedure (char) *)) #!optional fixnum fixnum)
- (or fixnum boolean)))
+ (or fixnum false)))
(string-skip-right
(#(procedure #:enforce)
string-skip-right
(string (or char (struct char-set) (procedure (char) *)) #!optional fixnum fixnum)
- (or fixnum boolean)))
+ (or fixnum false)))
(string-suffix-ci? (#(procedure #:clean #:enforce) string-suffix-ci? (string string #!optional fixnum fixnum fixnum fixnum) boolean))
(string-suffix-length (#(procedure #:clean #:enforce) string-suffix-length (string string #!optional fixnum fixnum fixnum fixnum) fixnum))
@@ -2336,7 +2336,7 @@
(make-condition-variable (#(procedure #:clean) make-condition-variable (#!optional *) (struct condition-variable)))
(make-mutex (#(procedure #:clean) make-mutex (#!optional *) (struct mutex)))
(make-thread (#(procedure #:clean #:enforce) make-thread ((procedure () . *) #!optional *) (struct thread)))
-(mutex-lock! (#(procedure #:clean #:enforce) mutex-lock! ((struct mutex) #!optional * (or boolean (struct thread))) boolean))
+(mutex-lock! (#(procedure #:clean #:enforce) mutex-lock! ((struct mutex) #!optional * (or false (struct thread))) boolean))
(mutex-name (#(procedure #:clean #:enforce) mutex-name ((struct mutex)) *)
(((struct mutex)) (##sys#slot #(1) '1)))
@@ -2624,12 +2624,12 @@
(tcp-abandon-port (#(procedure #:clean #:enforce) tcp-abandon-port (port) undefined))
(tcp-accept (#(procedure #:clean #:enforce) tcp-accept ((struct tcp-listener)) input-port output-port))
(tcp-accept-ready? (#(procedure #:clean #:enforce) tcp-accept-ready? ((struct tcp-listener)) boolean))
-(tcp-accept-timeout (#(procedure #:clean #:enforce) tcp-accept-timeout (#!optional (or boolean number)) (or boolean number)))
+(tcp-accept-timeout (#(procedure #:clean #:enforce) tcp-accept-timeout (#!optional (or false number)) (or false number)))
(tcp-addresses (#(procedure #:clean #:enforce) tcp-addresses (port) string string))
(tcp-buffer-size (#(procedure #:clean #:enforce) tcp-buffer-size (#!optional fixnum) fixnum))
(tcp-close (#(procedure #:clean #:enforce) tcp-close ((struct tcp-listener)) undefined))
(tcp-connect (#(procedure #:clean #:enforce) tcp-connect (string #!optional fixnum) input-port output-port))
-(tcp-connect-timeout (#(procedure #:clean #:enforce) tcp-connect-timeout (#!optional (or boolean number)) (or boolean number)))
+(tcp-connect-timeout (#(procedure #:clean #:enforce) tcp-connect-timeout (#!optional (or false number)) (or false number)))
(tcp-listen (#(procedure #:clean #:enforce) tcp-listen (fixnum #!optional fixnum *) (struct tcp-listener)))
(tcp-listener-fileno (#(procedure #:clean #:enforce) tcp-listener-fileno ((struct tcp-listener)) fixnum)
@@ -2640,8 +2640,8 @@
(tcp-listener? (#(procedure #:clean #:predicate (struct tcp-listener)) tcp-listener? (*) boolean))
(tcp-port-numbers (#(procedure #:clean #:enforce) tcp-port-numbers (port) fixnum fixnum))
-(tcp-read-timeout (#(procedure #:clean #:enforce) tcp-read-timeout (#!optional (or boolean number)) (or boolean number)))
-(tcp-write-timeout (#(procedure #:clean #:enforce) tcp-write-timeout (#!optional (or boolean number)) (or boolean number)))
+(tcp-read-timeout (#(procedure #:clean #:enforce) tcp-read-timeout (#!optional (or false number)) (or false number)))
+(tcp-write-timeout (#(procedure #:clean #:enforce) tcp-write-timeout (#!optional (or false number)) (or false number)))
;; utils
@@ -2649,7 +2649,7 @@
(read-all (#(procedure #:enforce) read-all (#!optional (or input-port string)) string))
(system* (#(procedure #:clean #:enforce) system* (string #!rest) undefined))
(qs (#(procedure #:clean #:enforce) qs (string) string))
-(compile-file (#(procedure #:clean #:enforce) compile-file (string #!rest) (or boolean string)))
+(compile-file (#(procedure #:clean #:enforce) compile-file (string #!rest) (or false string)))
(compile-file-options (#(procedure #:clean #:enforce) compile-file-options (#!optional (list-of string)) (list-of string)))
(scan-input-lines (#(procedure #:enforce) scan-input-lines (* #!optional input-port) *))
(yes-or-no? (#(procedure #:enforce) yes-or-no? (string #!rest) *))
--
1.7.10.4