Merge remote-tracking branch 'explicit_globals/master'
This commit is contained in:
commit
b7924de0c4
1 changed files with 25 additions and 0 deletions
25
corepatchlua.lua
Normal file
25
corepatchlua.lua
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
local mt = getmetatable(_G)
|
||||||
|
if mt == nil then
|
||||||
|
mt = {}
|
||||||
|
setmetatable(_G, mt)
|
||||||
|
end
|
||||||
|
mt.__declared = {}
|
||||||
|
function mt.__newindex(t, n, v)
|
||||||
|
if not mt.__declared[n] then
|
||||||
|
local info = debug.getinfo(2, "S")
|
||||||
|
if info and info.what ~= "main" and info.what ~= "C" then
|
||||||
|
error("cannot assign undeclared global '" .. tostring(n) .. "'", 2)
|
||||||
|
end
|
||||||
|
mt.__declared[n] = true
|
||||||
|
end
|
||||||
|
rawset(t, n, v)
|
||||||
|
end
|
||||||
|
|
||||||
|
function mt.__index(t, n)
|
||||||
|
if not mt.__declared[n] then
|
||||||
|
local info = debug.getinfo(2, "S")
|
||||||
|
if info and info.what ~= "main" and info.what ~= "C" then
|
||||||
|
error("cannot use undeclared global '" .. tostring(n) .. "'", 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue