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