diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-09-11 18:36:20 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-09-11 18:36:20 -0400 |
commit | a1c9eb584060bb6fac219f53540324777a7fa5b4 (patch) | |
tree | 9264fb632b5dc5ede15206e8cddf7bc3d438fba4 /src/elaborate.sml | |
parent | 42944f71120301ea2dff0e93f3a0f2e7df4a44b0 (diff) |
Fix bug in subsignature check for con synonyms
Diffstat (limited to 'src/elaborate.sml')
-rw-r--r-- | src/elaborate.sml | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/elaborate.sml b/src/elaborate.sml index 8564b2dd..223c10e6 100644 --- a/src/elaborate.sml +++ b/src/elaborate.sml @@ -2478,7 +2478,16 @@ fun subSgn (env, denv) sgn1 (sgn2 as (_, loc2)) = fun found (x', n1, k1, c1) = if x = x' then let - fun good () = SOME (E.pushCNamedAs env x n2 k2 (SOME c2), denv) + fun good () = + let + val env = E.pushCNamedAs env x n2 k2 (SOME c2) + val env = if n1 = n2 then + env + else + E.pushCNamedAs env x n1 k1 (SOME c1) + in + SOME (env, denv) + end in (case unifyCons (env, denv) c1 c2 of [] => good () |