1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-27 08:39:30 +00:00

Improve variable redefinition error

This commit is contained in:
Étienne Fildadut 2022-01-16 02:34:25 +01:00
parent eb3a1d3f2c
commit b60f53df01
2 changed files with 9 additions and 3 deletions

View file

@ -288,7 +288,13 @@ local function parse_line(line, state, namespace)
if not exp then return nil, ("expected \"= expression\" after %q in definition line; at %s"):format(rem, line.source) end
-- define identifier
if state.functions[fqm] then return nil, ("trying to define variable %q, but a function with the same name exists; at %s"):format(fqm, line.source) end
if state.variables[fqm] then return nil, ("trying to define variable %q but it is already defined; at %s"):format(fqm, line.source) end
if state.variables[fqm] then
if state.variables[fqm].type == "pending definition" then
return nil, ("trying to define variable %q but it is already defined at %s; at %s"):format(fqm, state.variables[fqm].value.source, line.source)
else
return nil, ("trying to define variable %q but it is already defined; at %s"):format(fqm, line.source)
end
end
r.fqm = fqm
r.expression = exp
state.variables[fqm] = { type = "pending definition", value = { expression = nil, source = r.source } }

View file

@ -1,6 +1,6 @@
local _={}
_[1]={"error","trying to define variable \"define override.a\" but it is already defined; at test/tests/define override.ans:3"}
_[1]={"error","trying to define variable \"define override.a\" but it is already defined at test/tests/define override.ans:1; at test/tests/define override.ans:3"}
return {_[1]}
--[[
{ "error", 'trying to define variable "define override.a" but it is already defined; at test/tests/define override.ans:3' }
{ "error", 'trying to define variable "define override.a" but it is already defined at test/tests/define override.ans:1; at test/tests/define override.ans:3' }
]]--