~ chicken-core (chicken-5) e1a54378d3481147f38519a9b14285ba84c7864e
commit e1a54378d3481147f38519a9b14285ba84c7864e Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Nov 14 14:30:36 2011 +0100 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Mon Nov 14 15:02:19 2011 +0100 when conditional branches differ in the number of results, do not merge the results Instead treat the expression as returning an undetermined number of unknown results. Bugfix for #680 Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> diff --git a/scrutinizer.scm b/scrutinizer.scm index 18543035..2f8ed8f0 100755 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -500,15 +500,16 @@ (add-to-blist (caar ble) (car flow) (cdr ble)))) blist))) (cond ((and (not (eq? '* r1)) (not (eq? '* r2))) - (when (and (not nor1) (not nor2) - (not (= (length r1) (length r2)))) - (report - loc - (sprintf - "branches in conditional expression differ in the number of results:~%~%~a" - (pp-fragment n)))) ;;(dd " branches: ~s:~s / ~s:~s" nor1 r1 nor2 r2) - (cond (nor1 r2) + (cond ((and (not nor1) (not nor2) + (not (= (length r1) (length r2)))) + (report + loc + (sprintf + "branches in conditional expression differ in the number of results:~%~%~a" + (pp-fragment n))) + '*) + (nor1 r2) (nor2 r1) (else (dd "merge branch results: ~s + ~s" r1 r2)Trap