This module causes an error if any nil global is read or if any global is written to, with the exception of arg. To use, add
require('Module:No globals')
to the top of the module using it. The arg variable is excluded because it is necessary for Scribunto's require function to work properly. (See the Scribunto source code here.)
localmt=getmetatable(_G)or{}functionmt.__index(t,k)ifk~='arg'thenerror('Tried to read nil global '..tostring(k),2)endreturnnilendfunctionmt.__newindex(t,k,v)ifk~='arg'thenerror('Tried to write global '..tostring(k),2)endrawset(t,k,v)endsetmetatable(_G,mt)