~ chicken-core (chicken-5) 2260b0b41519207d6872d57ecdb2e11430819c3f
commit 2260b0b41519207d6872d57ecdb2e11430819c3f
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Sat Aug 27 22:25:12 2011 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Sat Aug 27 22:25:12 2011 +0200
yet another one: handle #!rest/#!optional marker for both candidates when merging argtypes
diff --git a/scrutinizer.scm b/scrutinizer.scm
index 41d4b7f6..16ab2938 100755
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -1103,7 +1103,7 @@
(simplify (third t)))
((or)
(let ((ts (map simplify (cdr t))))
- (cond ((= 1 (length ts)) (simplify (car ts)))
+ (cond ((= 1 (length ts)) (car ts))
((every procedure-type? ts)
(if (any (cut eq? 'procedure <>) ts)
'procedure
@@ -1201,6 +1201,8 @@
,(simplify-type `(or ,(cadr ts1) ,(cadr ts2)))
,@(merge-argument-types (cddr ts1) (cddr ts2))))
(else '(#!rest)))) ;XXX
+ ((memq (car ts2) '(#!rest #!optional))
+ (merge-argument-types ts2 ts1))
(else (cons (simplify-type `(or ,(car ts1) ,(car ts2)))
(merge-argument-types (cdr ts1) (cdr ts2))))))
Trap