@@ -100,8 +100,8 @@ toEffectDups effects =
100addTypes :: Valid.Module -> Env.Env -> Result i w Env.Env
100addTypes :: Valid.Module -> Env.Env -> Result i w Env.Env
101addTypes (Valid.Module _ _ _ _ _ _ unions aliases _ _) (Env.Env home vs ts cs bs qvs qts qcs) =
101addTypes (Valid.Module _ _ _ _ _ _ unions aliases _ _) (Env.Env home vs ts cs bs qvs qts qcs) =
103− addAliasDups dups (Valid.Alias (A.At region name) _ _) = Dups.insert name region () dups
103+ addAliasDups dups (Valid.Alias _ (A.At region name) _ _) = Dups.insert name region () dups
104− addUnionDups dups (Valid.Union (A.At region name) _ _) = Dups.insert name region () dups
104+ addUnionDups dups (Valid.Union _ (A.At region name) _ _) = Dups.insert name region () dups
105 typeNameDups =
105 typeNameDups =
106 List.foldl' addUnionDups (List.foldl' addAliasDups Dups.none aliases) unions
106 List.foldl' addUnionDups (List.foldl' addAliasDups Dups.none aliases) unions
@@ -111,7 +111,7 @@ addTypes (Valid.Module _ _ _ _ _ _ unions aliases _ _) (Env.Env home vs ts cs bs
113addUnion :: ModuleName.Canonical -> Env.Exposed Env.Type -> Valid.Union -> Result i w (Env.Exposed Env.Type)
113addUnion :: ModuleName.Canonical -> Env.Exposed Env.Type -> Valid.Union -> Result i w (Env.Exposed Env.Type)
114−addUnion home types union@(Valid.Union (A.At _ name) _ _) =
114+addUnion home types union@(Valid.Union _ (A.At _ name) _ _) =
115 do arity <- checkUnionFreeVars union
115 do arity <- checkUnionFreeVars union
116 let one = Map.singleton home (Env.Union arity home)
116 let one = Map.singleton home (Env.Union arity home)
117 Result.ok $ Map.insert name one types
117 Result.ok $ Map.insert name one types
@@ -133,7 +133,7 @@ addAliases aliases env =
133addAlias :: Env.Env -> Graph.SCC Valid.Alias -> Result i w Env.Env
133addAlias :: Env.Env -> Graph.SCC Valid.Alias -> Result i w Env.Env
134addAlias env@(Env.Env home vs ts cs bs qvs qts qcs) scc =
134addAlias env@(Env.Env home vs ts cs bs qvs qts qcs) scc =
135 case scc of
135 case scc of
136− Graph.AcyclicSCC alias@(Valid.Alias (A.At _ name) _ tipe) ->
136+ Graph.AcyclicSCC alias@(Valid.Alias _ (A.At _ name) _ tipe) ->
137 do args <- checkAliasFreeVars alias
137 do args <- checkAliasFreeVars alias
138 ctype <- Type.canonicalize env tipe
138 ctype <- Type.canonicalize env tipe
139 let one = Map.singleton home (Env.Alias (length args) home args ctype)
139 let one = Map.singleton home (Env.Alias (length args) home args ctype)
@@ -143,9 +143,9 @@ addAlias env@(Env.Env home vs ts cs bs qvs qts qcs) scc =
143 Graph.CyclicSCC [] ->
143 Graph.CyclicSCC [] ->
144 Result.ok env
144 Result.ok env
146− Graph.CyclicSCC (alias@(Valid.Alias (A.At region name1) _ tipe) : others) ->
146+ Graph.CyclicSCC (alias@(Valid.Alias _ (A.At region name1) _ tipe) : others) ->
147 do args <- checkAliasFreeVars alias
147 do args <- checkAliasFreeVars alias
148− let toName (Valid.Alias (A.At _ name) _ _) = name
148+ let toName (Valid.Alias _ (A.At _ name) _ _) = name
149 Result.throw (Error.RecursiveAlias region name1 args tipe (map toName others))
149 Result.throw (Error.RecursiveAlias region name1 args tipe (map toName others))
@@ -154,7 +154,7 @@ addAlias env@(Env.Env home vs ts cs bs qvs qts qcs) scc =
156toNode :: Valid.Alias -> (Valid.Alias, N.Name, [N.Name])
156toNode :: Valid.Alias -> (Valid.Alias, N.Name, [N.Name])
157−toNode alias@(Valid.Alias (A.At _ name) _ tipe) =
157+toNode alias@(Valid.Alias _ (A.At _ name) _ tipe) =
158 ( alias, name, getEdges [] tipe )
158 ( alias, name, getEdges [] tipe )
@@ -188,7 +188,7 @@ getEdges edges (A.At _ tipe) =
190checkUnionFreeVars :: Valid.Union -> Result i w Int
190checkUnionFreeVars :: Valid.Union -> Result i w Int
191−checkUnionFreeVars (Valid.Union (A.At unionRegion name) args ctors) =
191+checkUnionFreeVars (Valid.Union unionRegion (A.At _ name) args ctors) =
193 addArg (A.At region arg) dict =
193 addArg (A.At region arg) dict =
194 Dups.insert arg region region dict
194 Dups.insert arg region region dict
@@ -202,14 +202,13 @@ checkUnionFreeVars (Valid.Union (A.At unionRegion name) args ctors) =
203 Result.ok (length args)
203 Result.ok (length args)
205− unbound ->
205+ unbound:unbounds ->
206− let toLoc (arg, region) = A.At region arg in
207 Result.throw $
206 Result.throw $
208− Error.TypeVarsUnboundInUnion unionRegion name (map A.toValue args) (map toLoc unbound)
207+ Error.TypeVarsUnboundInUnion unionRegion name (map A.toValue args) unbound unbounds
211checkAliasFreeVars :: Valid.Alias -> Result i w [N.Name]
210checkAliasFreeVars :: Valid.Alias -> Result i w [N.Name]
212−checkAliasFreeVars (Valid.Alias (A.At aliasRegion name) args tipe) =
211+checkAliasFreeVars (Valid.Alias aliasRegion (A.At _ name) args tipe) =
214 addArg (A.At region arg) dict =
213 addArg (A.At region arg) dict =
215 Dups.insert arg region region dict
214 Dups.insert arg region region dict
@@ -294,7 +293,7 @@ type CtorDups = Dups.Dict (Map.Map ModuleName.Canonical Env.Ctor)
296canonicalizeAlias :: Env.Env -> Valid.Alias -> Result i w ( (N.Name, Can.Alias), CtorDups )
295canonicalizeAlias :: Env.Env -> Valid.Alias -> Result i w ( (N.Name, Can.Alias), CtorDups )
297−canonicalizeAlias env@(Env.Env home _ _ _ _ _ _ _) (Valid.Alias (A.At region name) args tipe) =
296+canonicalizeAlias env@(Env.Env home _ _ _ _ _ _ _) (Valid.Alias _ (A.At region name) args tipe) =
298 case tipe of
297 case tipe of
299 A.At _ (Src.TRecord fields Nothing) ->
298 A.At _ (Src.TRecord fields Nothing) ->
300 do cfields <- traverse (traverse (Type.canonicalize env)) fields
299 do cfields <- traverse (traverse (Type.canonicalize env)) fields
@@ -324,7 +323,7 @@ canonicalizeAlias env@(Env.Env home _ _ _ _ _ _ _) (Valid.Alias (A.At region nam
326canonicalizeUnion :: Env.Env -> Valid.Union -> Result i w ( (N.Name, Can.Union), CtorDups )
325canonicalizeUnion :: Env.Env -> Valid.Union -> Result i w ( (N.Name, Can.Union), CtorDups )
327−canonicalizeUnion env@(Env.Env home _ _ _ _ _ _ _) (Valid.Union (A.At _ name) avars ctors) =
326+canonicalizeUnion env@(Env.Env home _ _ _ _ _ _ _) (Valid.Union _ (A.At _ name) avars ctors) =
328 do cctors <- Index.indexedTraverse (canonicalizeCtor env) ctors
327 do cctors <- Index.indexedTraverse (canonicalizeCtor env) ctors
329 let vars = map A.toValue avars
328 let vars = map A.toValue avars
330 let alts = map A.toValue cctors
329 let alts = map A.toValue cctors