[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Convenient undefined variable checking script
- From: steve donovan <steve.j.donovan@...>
- Date: Wed, 23 Jan 2013 14:45:22 +0200
On Wed, Jan 23, 2013 at 12:56 PM, Luiz Henrique de Figueiredo
<lhf@tecgraf.puc-rio.br> wrote:
> Nice. See also http://lua-users.org/lists/lua-l/2012-12/msg00397.html
Well, it was not difficult to update the code to work with both 5.1
and 5.2, using the interestingly named GETTABUP instruction instead,
and allowing for a somewhat different instruction presentation.
One of the cool things about this script is that it can detect more
than plain undeclared access, but warn against potentially evil
things:
-- globs2.lua
next = 3
table.who = 1
function table.boo ()
local k = 1
end
$ globals globs2.lua
globals: globs2.lua:2: redefining global next
globals: globs2.lua:4: redefining global table.who
globals: globs2.lua:6: redefining global table.boo
This required a further extension of David's trick for detecting field
access (by relaxing the requirement that the SETTABLE instruction had
to _immediately_ follow any global table access.)
Behaves almost identically for 5.1 or 5.2, but please change 'luac52'
to 'luac' (this was only way I could keep testing sane on my side)
BTW, I note that GETTABUP is not only used for _ENV? There are
definite limits on how far one can track variable usage, once
everything becomes locals, and I was wondering if we had extra
information that could be used.
steve d.