~ 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