4 require 'metalua.compiler'
6 --assert (+{foo}.quote, "no q!?")
12 { "everything should be renamed",
18 { "don't get confused between global and local x",
25 { "don't rename keepme",
29 { keep = 'keepme' , alpha = `Local{ { }, { } } } },
31 { "print shouldn't be renamed the 2nd and 3rd time",
34 -{!`Call{`Id 'print', `String 'hi' } }
35 -- Bugger. I don't detect any non-quoted element , so
36 -- the -{+{ }} thingie won't protect from capture.
40 { "print shouldn't be renamed at all",
43 -{`Call{`Id 'print', `String 'hi' } }
47 { "Rename print with a pre-specified name, rename x freely, not y",
50 { alpha = +{stat: local RENAMED_PRINT = print},
51 keep = {y = true} } } }
57 for case in values(TEST_CASES) do
58 local comment, ast, cfg = unpack(case)
59 print ('\n'..'-':rep(70))
61 print ("BEFORE PARSING:")
62 $log (ast, 50, 'nohash')
63 local _, alpha = H(cfg)(ast)
64 print ("AFTER PARSING:")
65 $log (ast, alpha, cfg.alpha, 50, 'nohash')
68 print ('\n'..'=':rep(70))