Module:No globals

From TetrisWiki
Revision as of 05:24, 18 September 2019 by Simonlc (talk | contribs) (https://www.mediawiki.org/wiki/Module:No_globals)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Usage

Include this module at the top of your code. An error will be raised any time your code tries to read or write to a non-local (undeclared) variable.

Tests

Module:No globals Script error: No such module "No globals/testcases".
Module:No globals/sandbox Script error: No such module "No globals/testcases".



local mt = getmetatable(_G) or {}
function mt.__index (t, k)
	if k ~= 'arg' then
		-- perf optimization here and below: do not load Module:TNT unless there is an error
		error(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2)
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' then
		error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2)
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)