]> git.saurik.com Git - redis.git/blob - deps/lua/test/trace-globals.lua
Merge remote-tracking branch 'origin/unstable' into unstable
[redis.git] / deps / lua / test / trace-globals.lua
1 -- trace assigments to global variables
2
3 do
4 -- a tostring that quotes strings. note the use of the original tostring.
5 local _tostring=tostring
6 local tostring=function(a)
7 if type(a)=="string" then
8 return string.format("%q",a)
9 else
10 return _tostring(a)
11 end
12 end
13
14 local log=function (name,old,new)
15 local t=debug.getinfo(3,"Sl")
16 local line=t.currentline
17 io.write(t.short_src)
18 if line>=0 then io.write(":",line) end
19 io.write(": ",name," is now ",tostring(new)," (was ",tostring(old),")","\n")
20 end
21
22 local g={}
23 local set=function (t,name,value)
24 log(name,g[name],value)
25 g[name]=value
26 end
27 setmetatable(getfenv(),{__index=g,__newindex=set})
28 end
29
30 -- an example
31
32 a=1
33 b=2
34 a=10
35 b=20
36 b=nil
37 b=200
38 print(a,b,c)