@@ -30,10 +30,10 @@ variable region env var =
3030 Just [v] ->
3131 Result.var v
3232
33− Just vs ->
33+ Just vs ->
3434 preferLocals region env "variable" vs var
3535
36− Nothing ->
36+ Nothing ->
3737 notFound region "variable" (Map.keys (Env._values env)) var
3838
3939
@@ -110,7 +110,7 @@ preferLocals'
110110 -> String
111111 -> Result.ResultErr a
112112preferLocals' region env extract kind possibilities var =
113− case filter (isLocal . extract) possibilities of
113+ case filter (isLocal (Env._home env) . extract) possibilities of
114114 [] ->
115115 ambiguous possibilities
116116
@@ -118,36 +118,48 @@ preferLocals' region env extract kind possibilities var =
118118 Result.var' extract v
119119
120120 --Local vars shadow top-level vars
121− [v1, v2] | isTopLevel (extract v1) ->
122− Result.var' extract v2
121+ [v1, v2]
122+ | isTopLevel (extract v1) ->
123+ Result.var' extract v2
123124
124− [v1, v2] | isTopLevel (extract v2) ->
125− Result.var' extract v1
125+ | isTopLevel (extract v2) ->
126+ Result.var' extract v1
126127
127128 locals ->
128129 ambiguous locals
129130 where
130− isLocal :: Var.Canonical -> Bool
131− isLocal (Var.Canonical home _) =
132− case home of
133− Var.Local -> True
134− Var.TopLevel _ -> True
135− Var.BuiltIn -> False
136− Var.Module name ->
137− name == Env._home env
138−
139− isTopLevel :: Var.Canonical -> Bool
140− isTopLevel (Var.Canonical home _) =
141− case home of
142− Var.TopLevel _ -> True
143− _ -> False
144−
145131 ambiguous possibleVars =
146132 Result.err (A.A region (Error.variable kind var Error.Ambiguous vars))
147133 where
148134 vars = map (Var.toString . extract) possibleVars
149135
150136
137+isLocal :: [String] -> Var.Canonical -> Bool
138+isLocal contextName (Var.Canonical home _) =
139+ case home of
140+ Var.Local ->
141+ True
142+
143+ Var.TopLevel _ ->
144+ True
145+
146+ Var.BuiltIn ->
147+ False
148+
149+ Var.Module name ->
150+ name == contextName
151+
152+
153+isTopLevel :: Var.Canonical -> Bool
154+isTopLevel (Var.Canonical home _) =
155+ case home of
156+ Var.TopLevel _ ->
157+ True
158+
159+ _ ->
160+ False
161+
162+
151163-- NOT FOUND HELPERS
152164
153165type VarName =