@@ -30,10 +30,10 @@ variable region env var =
30 Just [v] ->
30 Just [v] ->
31 Result.var v
31 Result.var v
33− Just vs ->
33+ Just vs ->
34 preferLocals region env "variable" vs var
34 preferLocals region env "variable" vs var
36− Nothing ->
36+ Nothing ->
37 notFound region "variable" (Map.keys (Env._values env)) var
37 notFound region "variable" (Map.keys (Env._values env)) var
@@ -110,7 +110,7 @@ preferLocals'
110 -> String
110 -> String
111 -> Result.ResultErr a
111 -> Result.ResultErr a
112preferLocals' region env extract kind possibilities var =
112preferLocals' region env extract kind possibilities var =
113− case filter (isLocal . extract) possibilities of
113+ case filter (isLocal (Env._home env) . extract) possibilities of
115 ambiguous possibilities
115 ambiguous possibilities
@@ -118,36 +118,48 @@ preferLocals' region env extract kind possibilities var =
118 Result.var' extract v
118 Result.var' extract v
120 --Local vars shadow top-level vars
120 --Local vars shadow top-level vars
121− [v1, v2] | isTopLevel (extract v1) ->
122+ | isTopLevel (extract v1) ->
122− Result.var' extract v2
123+ Result.var' extract v2
124− [v1, v2] | isTopLevel (extract v2) ->
125+ | isTopLevel (extract v2) ->
125− Result.var' extract v1
126+ Result.var' extract v1
127 locals ->
128 locals ->
128 ambiguous locals
129 ambiguous locals
130− isLocal :: Var.Canonical -> Bool
131− isLocal (Var.Canonical home _) =
134− Var.TopLevel _ -> True
135− Var.BuiltIn -> False
137− name == Env._home env
139− isTopLevel :: Var.Canonical -> Bool
140− isTopLevel (Var.Canonical home _) =
142− Var.TopLevel _ -> True
145 ambiguous possibleVars =
131 ambiguous possibleVars =
146 Result.err (A.A region (Error.variable kind var Error.Ambiguous vars))
132 Result.err (A.A region (Error.variable kind var Error.Ambiguous vars))
148 vars = map (Var.toString . extract) possibleVars
134 vars = map (Var.toString . extract) possibleVars
137+isLocal :: [String] -> Var.Canonical -> Bool
138+isLocal contextName (Var.Canonical home _) =
153+isTopLevel :: Var.Canonical -> Bool
154+isTopLevel (Var.Canonical home _) =
151-- NOT FOUND HELPERS
163-- NOT FOUND HELPERS
153type VarName =
165type VarName =