@@ -24,7 +24,6 @@ constrain :: Environment -> P.CanonicalPattern -> Type
2424constrain env pattern tipe =
2525 let region = A.None (pretty pattern)
2626 t1 === t2 = A.A region (CEqual t1 t2)
27− x <? t = A.A region (CInstance x t)
2827 in
2928 case pattern of
3029 P.Anything -> return emptyFragment
@@ -42,10 +41,12 @@ constrain env pattern tipe =
4241 }
4342
4443 P.Alias name p -> do
44+ v <- liftIO $ variable Flexible
4545 fragment <- constrain env p tipe
46− return $ fragment {
47− typeEnv = Map.insert name tipe (typeEnv fragment),
48− typeConstraint = name <? tipe /\ typeConstraint fragment
46+ return $ fragment
47+ { typeEnv = Map.insert name (varN v) (typeEnv fragment)
48+ , vars = v : vars fragment
49+ , typeConstraint = varN v === tipe /\ typeConstraint fragment
4950 }
5051
5152 P.Data name patterns -> do