~ chicken-core (chicken-5) d1f1408b7cbe21ad5679c1d1c02a45f63f2b8ccb
commit d1f1408b7cbe21ad5679c1d1c02a45f63f2b8ccb Author: felix <felix@call-with-current-continuation.org> AuthorDate: Sat Aug 20 13:35:11 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Sat Aug 20 13:35:11 2011 +0200 more tmatch tests diff --git a/tests/typematch-tests.scm b/tests/typematch-tests.scm index 9124598f..031196c5 100644 --- a/tests/typematch-tests.scm +++ b/tests/typematch-tests.scm @@ -46,6 +46,13 @@ (compiler-typecase (,foo2) (,t1 'ok))))))) +(define-syntax mx + (syntax-rules () + ((_ t x) + (compiler-typecase + x + (t 'ok))))) + (define-syntax mn (er-macro-transformer (lambda (x r c) @@ -137,6 +144,9 @@ (ms (##sys#make-structure 'promise) 1 (struct promise)) (ms '(1 . 2.3) '(a) (pair fixnum float)) (ms '#(a) 1 (vector symbol)) +(ms '(1) 'a (or pair symbol)) +(ms (list) 'a list) +(ms '() 'a (or null pair)) (checkp boolean? #t boolean) (checkp boolean? #f boolean) @@ -170,3 +180,7 @@ (mn (procedure (*) *) (procedure () *)) (m (procedure (#!rest) . *) (procedure (*) . *)) (mn (procedure () *) (procedure () * *)) + +(mx (forall (a) (procedure (#!rest a) a) +)) +(mx (or pair null) '(1)) +(mx (or pair null) (list)) diff --git a/types.db.new b/types.db.new index b1e00026..6e717fa5 100644 --- a/types.db.new +++ b/types.db.new @@ -1029,7 +1029,7 @@ (alist-ref (procedure! alist-ref (* (list pair) #!optional (procedure (* *) *) *) *)) (alist-update! (procedure! alist-update! (* * (list pair) #!optional (procedure (* *) *)) *)) -(always? (procedure always? (#!rest) boolean)) +(always? deprecated) (any? (procedure any? (*) boolean) ((*) (let ((#(tmp) #(1))) '#t))) @@ -1059,14 +1059,10 @@ (make-queue (procedure make-queue () (struct queue))) (merge (procedure! merge (list list (procedure (* *) *)) list)) (merge! (procedure! merge! (list list (procedure (* *) *)) list)) -(never? (procedure never? (#!rest) boolean)) - -(none? (procedure none? (*) boolean)) - +(never? deprecated) +(none? deprecated) (o (procedure! o (#!rest (procedure (*) *)) (procedure (*) *))) - (queue->list (procedure! queue->list ((struct queue)) list)) - (queue-add! (procedure! queue-add! ((struct queue) *) undefined)) (queue-empty? (procedure! queue-empty? ((struct queue)) boolean)Trap