X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/75d4c2d6fb7996625d062f5949ceb2e66c0a70ab..a356587aacf682b584fbbebf7b999154755e80c7:/src/tycheck.sml diff --git a/src/tycheck.sml b/src/tycheck.sml index f68100f..d5b3f1e 100644 --- a/src/tycheck.sml +++ b/src/tycheck.sml @@ -574,8 +574,6 @@ fun checkExp G (eAll as (e, loc)) = | EIf (e1, e2, e3) => let - val t = (newUnif (), loc) - val t1 = checkExp G e1 val t2 = checkExp G e2 val t3 = checkExp G e3 @@ -583,20 +581,21 @@ fun checkExp G (eAll as (e, loc)) = in (subTyp (t1, bool)) handle Unify ue => - dte (WrongType ("\"If\" test", + dte (WrongType ("\"if\" test", e1, t1, bool, SOME ue)); - subTyp (t2, t); - (subTyp (t3, t)) - handle Unify ue => - dte (WrongType ("\"Else\" case", - eAll, - t3, - t2, - SOME ue)); - t + (subTyp (t2, t3); t3) + handle Unify _ => + ((subTyp (t3, t2); t2) + handle Unify ue => + (dte (WrongType ("\"else\" case", + eAll, + t3, + t2, + SOME ue)); + (TError, loc))) end end