gists/explicit_globals/corepatchlua.lua
2018-10-11 16:45:31 +02:00

25 lines
624 B
Lua

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