~ chicken-core (chicken-5) f9c5c6945c1f1af26f585f1151c8f2711dfc8e13
commit f9c5c6945c1f1af26f585f1151c8f2711dfc8e13 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Dec 21 11:50:34 2011 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed Dec 21 11:50:34 2011 +0100 handle invalid type in 'the' form; fix bug in pair-type validation diff --git a/scrutinizer.scm b/scrutinizer.scm index a3e2ad4e..a0ac015a 100755 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -741,6 +741,8 @@ (map (cut resolve <> typeenv) r))))))) ((##core#the) (let-values (((t pred pure) (validate-type (first params) #f))) + (unless t + (quit "invalid type specification: ~s" (first params))) (let ((rt (walk (first subs) e loc dest tail flow ctags))) (cond ((eq? rt '*)) ((null? rt) @@ -2020,7 +2022,7 @@ ((eq? 'pair (car t)) (and (= 3 (length t)) (let ((ts (map validate (cdr t)))) - (and ts `(pair ,@ts))))) + (and (every identity ts) `(pair ,@ts))))) ((eq? 'procedure (car t)) (and (pair? (cdr t)) (let* ((name (if (symbol? (cadr t))Trap