]> git.lizzy.rs Git - metalua.git/blob - src/samples/h_test.mlua
0.4-rc2
[metalua.git] / src / samples / h_test.mlua
1 -{ extension 'log' }
2 -{ extension  'H'  }
3
4 require 'metalua.compiler'
5
6 TEST_CASES = { 
7
8    {  "everything should be renamed",
9       +{ block: 
10          local x = 3
11          print(x) },
12       { } }, 
13
14   {  "don't get confused between global and local x",
15      +{ block: 
16         print(x)
17         local x = 3
18         print(x) },
19      { alpha = { } } },
20
21   {  "don't rename keepme",
22      +{ block:
23         keepme()
24         dont_keep_me() },
25      { keep = 'keepme' , alpha = `Local{ { }, { } } } },
26  
27   {  "print shouldn't be renamed the 2nd and 3rd time",
28      +{ block:
29         print(i)
30         -{!`Call{`Id 'print', `String 'hi' } } 
31         -{!+{print 'hi'}} },
32      { } },
33  
34   {  "print shouldn't be renamed at all",
35      +{ block: 
36         print(i)
37         -{`Call{`Id 'print', `String 'hi' } }
38         -{+{print 'hi'}} },
39      { keep = 'print' } },
40  
41   {  "Rename print with a pre-specified name, rename x freely, not y",
42      +{ block: 
43         print (x, y) },
44      {  alpha = +{stat: local RENAMED_PRINT = print}, 
45         keep  = {y = true} } } } 
46
47 for case in ivalues(TEST_CASES) do
48    local comment, ast, cfg = unpack(case)
49    print ('\n'..'-':rep(70))
50    print (comment)
51    local H = H:new(cfg)
52    print ("\nBEFORE PARSING:")
53    $log (ast, H, 50)
54    H(ast)
55    print ("\nAFTER PARSING:")
56    $log (ast, H, 50)
57 end
58
59 print ('\n'..'=':rep(70))
60 $log(TEST_CASES,40)