-{ extension 'log' } -{ extension 'H' } require 'metalua.compiler' TEST_CASES = { { "everything should be renamed", +{ block: local x = 3 print(x) }, { } }, { "don't get confused between global and local x", +{ block: print(x) local x = 3 print(x) }, { alpha = { } } }, { "don't rename keepme", +{ block: keepme() dont_keep_me() }, { keep = 'keepme' , alpha = `Local{ { }, { } } } }, { "print shouldn't be renamed the 2nd and 3rd time", +{ block: print(i) -{!`Call{`Id 'print', `String 'hi' } } -{!+{print 'hi'}} }, { } }, { "print shouldn't be renamed at all", +{ block: print(i) -{`Call{`Id 'print', `String 'hi' } } -{+{print 'hi'}} }, { keep = 'print' } }, { "Rename print with a pre-specified name, rename x freely, not y", +{ block: print (x, y) }, { alpha = +{stat: local RENAMED_PRINT = print}, keep = {y = true} } } } for case in ivalues(TEST_CASES) do local comment, ast, cfg = unpack(case) print ('\n'..'-':rep(70)) print (comment) local H = H:new(cfg) print ("\nBEFORE PARSING:") $log (ast, H, 50) H(ast) print ("\nAFTER PARSING:") $log (ast, H, 50) end print ('\n'..'=':rep(70)) $log(TEST_CASES,40)