@@ -24,7 +24,6 @@ constrain :: Environment -> P.CanonicalPattern -> Type
24constrain env pattern tipe =
24constrain env pattern tipe =
25 let region = A.None (pretty pattern)
25 let region = A.None (pretty pattern)
26 t1 === t2 = A.A region (CEqual t1 t2)
26 t1 === t2 = A.A region (CEqual t1 t2)
27− x <? t = A.A region (CInstance x t)
29 case pattern of
28 case pattern of
30 P.Anything -> return emptyFragment
29 P.Anything -> return emptyFragment
@@ -42,10 +41,12 @@ constrain env pattern tipe =
44 P.Alias name p -> do
43 P.Alias name p -> do
44+ v <- liftIO $ variable Flexible
45 fragment <- constrain env p tipe
45 fragment <- constrain env p tipe
46− return $ fragment {
46+ return $ fragment
47− typeEnv = Map.insert name tipe (typeEnv fragment),
47+ { typeEnv = Map.insert name (varN v) (typeEnv fragment)
48+ , vars = v : vars fragment
48− typeConstraint = name <? tipe /\ typeConstraint fragment
49+ , typeConstraint = varN v === tipe /\ typeConstraint fragment
51 P.Data name patterns -> do
52 P.Data name patterns -> do