@@ -14,7 +14,6 @@ import qualified AST.Source as Src
1414import qualified AST.Module.Name as ModuleName
1515import qualified Canonicalize.Environment as Env
1616import qualified Data.List as List
17−import qualified Data.OneOrMore as OneOrMore
1817import qualified Elm.Interface as I
1918import qualified Elm.Name as N
2019import qualified Reporting.Annotation as A
@@ -58,11 +57,11 @@ isNotKernel (Src.Import (A.At _ name) _ _) =
5857
5958data State =
6059 State
61− { _vars :: Env.Exposed Env.ForeignVar
60+ { _vars :: Env.Exposed Can.Annotation
6261 , _types :: Env.Exposed Env.Type
6362 , _ctors :: Env.Exposed Env.Ctor
6463 , _binops :: Env.Exposed Env.Binop
65− , _q_vars :: Env.Qualified Env.ForeignVar
64+ , _q_vars :: Env.Qualified Can.Annotation
6665 , _q_types :: Env.Qualified Env.Type
6766 , _q_ctors :: Env.Qualified Env.Ctor
6867 }
@@ -75,7 +74,7 @@ emptyState =
7574
7675emptyTypes :: Env.Exposed Env.Type
7776emptyTypes =
78− Map.singleton "List" (OneOrMore.one (Env.Union 1 ModuleName.list))
77+ Map.singleton "List" (Map.singleton ModuleName.list (Env.Union 1 ModuleName.list))
7978
8079
8180
@@ -90,8 +89,8 @@ addImport (State vs ts cs bs qvs qts qcs) (Import home (I.Interface defs unions
9089 (Map.mapWithKey (unionToType home) unions)
9190 (Map.mapWithKey (aliasToType home) aliases)
9291
93− !vars = Map.map (OneOrMore.one . Env.ForeignVar home) defs
94− !types = Map.map (OneOrMore.one . fst) rawTypeInfo
92+ !vars = Map.map (Map.singleton home) defs
93+ !types = Map.map (Map.singleton home . fst) rawTypeInfo
9594 !ctors = Map.foldr (addExposed . snd) Map.empty rawTypeInfo
9695
9796 !qvs2 = addQualified prefix vars qvs
@@ -117,7 +116,7 @@ addImport (State vs ts cs bs qvs qts qcs) (Import home (I.Interface defs unions
117116
118117addExposed :: Env.Exposed a -> Env.Exposed a -> Env.Exposed a
119118addExposed =
120− Map.unionWith OneOrMore.more
119+ Map.unionWith Map.union
121120
122121
123122addQualified :: N.Name -> Env.Exposed a -> Env.Qualified a -> Env.Qualified a
@@ -133,7 +132,7 @@ unionToType :: ModuleName.Canonical -> N.Name -> Can.Union -> (Env.Type, Env.Exp
133132unionToType home name union@(Can.Union vars ctors _ _) =
134133 let
135134 addCtor dict (Can.Ctor ctor index _ args) =
136− Map.insert ctor (OneOrMore.one (Env.Ctor home name union index args)) dict
135+ Map.insert ctor (Map.singleton home (Env.Ctor home name union index args)) dict
137136 in
138137 ( Env.Union (length vars) home
139138 , List.foldl' addCtor Map.empty ctors
@@ -150,13 +149,13 @@ aliasToType home name (Can.Alias vars tipe maybeRecordArgs) =
150149 Map.empty
151150
152151 Just _ ->
153− Map.singleton name (OneOrMore.one (Env.RecordCtor home vars tipe))
152+ Map.singleton name (Map.singleton home (Env.RecordCtor home vars tipe))
154153 )
155154
156155
157−binopToBinop :: ModuleName.Canonical -> N.Name -> I.Binop -> OneOrMore.OneOrMore Env.Binop
156+binopToBinop :: ModuleName.Canonical -> N.Name -> I.Binop -> Map.Map ModuleName.Canonical Env.Binop
158157binopToBinop home op (I.Binop name annotation associativity precedence) =
159− OneOrMore.one (Env.Binop op home name annotation associativity precedence)
158+ Map.singleton home (Env.Binop op home name annotation associativity precedence)
160159
161160
162161
@@ -165,7 +164,7 @@ binopToBinop home op (I.Binop name annotation associativity precedence) =
165164
166165addExposedValue
167166 :: ModuleName.Canonical
168− -> Env.Exposed Env.ForeignVar
167+ -> Env.Exposed Can.Annotation
169168 -> Map.Map N.Name (Env.Type, Env.Exposed Env.Ctor)
170169 -> Map.Map N.Name I.Binop
171170 -> State
@@ -189,13 +188,13 @@ addExposedValue home vars types binops (State vs ts cs bs qvs qts qcs) (A.At reg
189188 case tipe of
190189 Env.Union _ _ ->
191190 let
192− !ts2 = Map.insert name (OneOrMore.one tipe) ts
191+ !ts2 = Map.insert name (Map.singleton home tipe) ts
193192 in
194193 Result.ok (State vs ts2 cs bs qvs qts qcs)
195194
196195 Env.Alias _ _ _ _ ->
197196 let
198− !ts2 = Map.insert name (OneOrMore.one tipe) ts
197+ !ts2 = Map.insert name (Map.singleton home tipe) ts
199198 !cs2 = addExposed cs ctors
200199 in
201200 Result.ok (State vs ts2 cs2 bs qvs qts qcs)
@@ -209,7 +208,7 @@ addExposedValue home vars types binops (State vs ts cs bs qvs qts qcs) (A.At reg
209208 case tipe of
210209 Env.Union _ _ ->
211210 let
212− !ts2 = Map.insert name (OneOrMore.one tipe) ts
211+ !ts2 = Map.insert name (Map.singleton home tipe) ts
213212 !cs2 = addExposed cs ctors
214213 in
215214 Result.ok (State vs ts2 cs2 bs qvs qts qcs)