diff options
-rw-r--r-- | src/elaborate.sml | 9 | ||||
-rw-r--r-- | tests/modules.lac | 16 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/elaborate.sml b/src/elaborate.sml index c61a84c1..b232a980 100644 --- a/src/elaborate.sml +++ b/src/elaborate.sml @@ -1085,7 +1085,14 @@ fun subSgn env (all1 as (sgn1, _)) (all2 as (sgn2, loc2)) = end | _ => NONE) - | _ => raise Fail "Not ready for more sig matching" + | L'.SgiStr (x, n2, sgn2) => + seek (fn sgi1All as (sgi1, _) => + case sgi1 of + L'.SgiStr (x, n1, sgn1) => + (subSgn env sgn1 sgn2; + SOME env) + | _ => NONE) + (* Add type equations between structures here some day. *) end in ignore (foldl folder env sgis2) diff --git a/tests/modules.lac b/tests/modules.lac index 1bdc685c..5089f17b 100644 --- a/tests/modules.lac +++ b/tests/modules.lac @@ -57,3 +57,19 @@ structure Wobble2 = struct type s = int type t = float end + + +structure N = struct + type t = string + structure N2 = struct + type t = int + val zero = 0 + end + val x = "Hi" +end +signature N = sig + structure N2 : NAT + type t + val x : t +end +structure No : N = N |