--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/verybig.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing RK\"", ), ], ], ), ], line: 1, }, Function { local: true, name: [ Symbol( "foo", ), ], args: [], body: CodeBlock { start: 7, code: [ Variable { names: [ ( "dummy", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "6", ), ], ), ( None, [ Symbol( "7", ), ], ), ( None, [ Symbol( "8", ), ], ), ( None, [ Symbol( "9", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "11", ), ], ), ( None, [ Symbol( "12", ), ], ), ( None, [ Symbol( "13", ), ], ), ( None, [ Symbol( "14", ), ], ), ( None, [ Symbol( "15", ), ], ), ( None, [ Symbol( "16", ), ], ), ( None, [ Symbol( "17", ), ], ), ( None, [ Symbol( "18", ), ], ), ( None, [ Symbol( "19", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "21", ), ], ), ( None, [ Symbol( "22", ), ], ), ( None, [ Symbol( "23", ), ], ), ( None, [ Symbol( "24", ), ], ), ( None, [ Symbol( "25", ), ], ), ( None, [ Symbol( "26", ), ], ), ( None, [ Symbol( "27", ), ], ), ( None, [ Symbol( "28", ), ], ), ( None, [ Symbol( "29", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "31", ), ], ), ( None, [ Symbol( "32", ), ], ), ( None, [ Symbol( "33", ), ], ), ( None, [ Symbol( "34", ), ], ), ( None, [ Symbol( "35", ), ], ), ( None, [ Symbol( "36", ), ], ), ( None, [ Symbol( "37", ), ], ), ( None, [ Symbol( "38", ), ], ), ( None, [ Symbol( "39", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "41", ), ], ), ( None, [ Symbol( "42", ), ], ), ( None, [ Symbol( "43", ), ], ), ( None, [ Symbol( "44", ), ], ), ( None, [ Symbol( "45", ), ], ), ( None, [ Symbol( "46", ), ], ), ( None, [ Symbol( "47", ), ], ), ( None, [ Symbol( "48", ), ], ), ( None, [ Symbol( "49", ), ], ), ( None, [ Symbol( "50", ), ], ), ( None, [ Symbol( "51", ), ], ), ( None, [ Symbol( "52", ), ], ), ( None, [ Symbol( "53", ), ], ), ( None, [ Symbol( "54", ), ], ), ( None, [ Symbol( "55", ), ], ), ( None, [ Symbol( "56", ), ], ), ( None, [ Symbol( "57", ), ], ), ( None, [ Symbol( "58", ), ], ), ( None, [ Symbol( "59", ), ], ), ( None, [ Symbol( "60", ), ], ), ( None, [ Symbol( "61", ), ], ), ( None, [ Symbol( "62", ), ], ), ( None, [ Symbol( "63", ), ], ), ( None, [ Symbol( "64", ), ], ), ( None, [ Symbol( "65", ), ], ), ( None, [ Symbol( "66", ), ], ), ( None, [ Symbol( "67", ), ], ), ( None, [ Symbol( "68", ), ], ), ( None, [ Symbol( "69", ), ], ), ( None, [ Symbol( "70", ), ], ), ( None, [ Symbol( "71", ), ], ), ( None, [ Symbol( "72", ), ], ), ( None, [ Symbol( "73", ), ], ), ( None, [ Symbol( "74", ), ], ), ( None, [ Symbol( "75", ), ], ), ( None, [ Symbol( "76", ), ], ), ( None, [ Symbol( "77", ), ], ), ( None, [ Symbol( "78", ), ], ), ( None, [ Symbol( "79", ), ], ), ( None, [ Symbol( "80", ), ], ), ( None, [ Symbol( "81", ), ], ), ( None, [ Symbol( "82", ), ], ), ( None, [ Symbol( "83", ), ], ), ( None, [ Symbol( "84", ), ], ), ( None, [ Symbol( "85", ), ], ), ( None, [ Symbol( "86", ), ], ), ( None, [ Symbol( "87", ), ], ), ( None, [ Symbol( "88", ), ], ), ( None, [ Symbol( "89", ), ], ), ( None, [ Symbol( "90", ), ], ), ( None, [ Symbol( "91", ), ], ), ( None, [ Symbol( "92", ), ], ), ( None, [ Symbol( "93", ), ], ), ( None, [ Symbol( "94", ), ], ), ( None, [ Symbol( "95", ), ], ), ( None, [ Symbol( "96", ), ], ), ( None, [ Symbol( "97", ), ], ), ( None, [ Symbol( "98", ), ], ), ( None, [ Symbol( "99", ), ], ), ( None, [ Symbol( "100", ), ], ), ( None, [ Symbol( "101", ), ], ), ( None, [ Symbol( "102", ), ], ), ( None, [ Symbol( "103", ), ], ), ( None, [ Symbol( "104", ), ], ), ( None, [ Symbol( "105", ), ], ), ( None, [ Symbol( "106", ), ], ), ( None, [ Symbol( "107", ), ], ), ( None, [ Symbol( "108", ), ], ), ( None, [ Symbol( "109", ), ], ), ( None, [ Symbol( "110", ), ], ), ( None, [ Symbol( "111", ), ], ), ( None, [ Symbol( "112", ), ], ), ( None, [ Symbol( "113", ), ], ), ( None, [ Symbol( "114", ), ], ), ( None, [ Symbol( "115", ), ], ), ( None, [ Symbol( "116", ), ], ), ( None, [ Symbol( "117", ), ], ), ( None, [ Symbol( "118", ), ], ), ( None, [ Symbol( "119", ), ], ), ( None, [ Symbol( "120", ), ], ), ( None, [ Symbol( "121", ), ], ), ( None, [ Symbol( "122", ), ], ), ( None, [ Symbol( "123", ), ], ), ( None, [ Symbol( "124", ), ], ), ( None, [ Symbol( "125", ), ], ), ( None, [ Symbol( "126", ), ], ), ( None, [ Symbol( "127", ), ], ), ( None, [ Symbol( "128", ), ], ), ( None, [ Symbol( "129", ), ], ), ( None, [ Symbol( "130", ), ], ), ( None, [ Symbol( "131", ), ], ), ( None, [ Symbol( "132", ), ], ), ( None, [ Symbol( "133", ), ], ), ( None, [ Symbol( "134", ), ], ), ( None, [ Symbol( "135", ), ], ), ( None, [ Symbol( "136", ), ], ), ( None, [ Symbol( "137", ), ], ), ( None, [ Symbol( "138", ), ], ), ( None, [ Symbol( "139", ), ], ), ( None, [ Symbol( "140", ), ], ), ( None, [ Symbol( "141", ), ], ), ( None, [ Symbol( "142", ), ], ), ( None, [ Symbol( "143", ), ], ), ( None, [ Symbol( "144", ), ], ), ( None, [ Symbol( "145", ), ], ), ( None, [ Symbol( "146", ), ], ), ( None, [ Symbol( "147", ), ], ), ( None, [ Symbol( "148", ), ], ), ( None, [ Symbol( "149", ), ], ), ( None, [ Symbol( "150", ), ], ), ( None, [ Symbol( "151", ), ], ), ( None, [ Symbol( "152", ), ], ), ( None, [ Symbol( "153", ), ], ), ( None, [ Symbol( "154", ), ], ), ( None, [ Symbol( "155", ), ], ), ( None, [ Symbol( "156", ), ], ), ( None, [ Symbol( "157", ), ], ), ( None, [ Symbol( "158", ), ], ), ( None, [ Symbol( "159", ), ], ), ( None, [ Symbol( "160", ), ], ), ( None, [ Symbol( "161", ), ], ), ( None, [ Symbol( "162", ), ], ), ( None, [ Symbol( "163", ), ], ), ( None, [ Symbol( "164", ), ], ), ( None, [ Symbol( "165", ), ], ), ( None, [ Symbol( "166", ), ], ), ( None, [ Symbol( "167", ), ], ), ( None, [ Symbol( "168", ), ], ), ( None, [ Symbol( "169", ), ], ), ( None, [ Symbol( "170", ), ], ), ( None, [ Symbol( "171", ), ], ), ( None, [ Symbol( "172", ), ], ), ( None, [ Symbol( "173", ), ], ), ( None, [ Symbol( "174", ), ], ), ( None, [ Symbol( "175", ), ], ), ( None, [ Symbol( "176", ), ], ), ( None, [ Symbol( "177", ), ], ), ( None, [ Symbol( "178", ), ], ), ( None, [ Symbol( "179", ), ], ), ( None, [ Symbol( "180", ), ], ), ( None, [ Symbol( "181", ), ], ), ( None, [ Symbol( "182", ), ], ), ( None, [ Symbol( "183", ), ], ), ( None, [ Symbol( "184", ), ], ), ( None, [ Symbol( "185", ), ], ), ( None, [ Symbol( "186", ), ], ), ( None, [ Symbol( "187", ), ], ), ( None, [ Symbol( "188", ), ], ), ( None, [ Symbol( "189", ), ], ), ( None, [ Symbol( "190", ), ], ), ( None, [ Symbol( "191", ), ], ), ( None, [ Symbol( "192", ), ], ), ( None, [ Symbol( "193", ), ], ), ( None, [ Symbol( "194", ), ], ), ( None, [ Symbol( "195", ), ], ), ( None, [ Symbol( "196", ), ], ), ( None, [ Symbol( "197", ), ], ), ( None, [ Symbol( "198", ), ], ), ( None, [ Symbol( "199", ), ], ), ( None, [ Symbol( "200", ), ], ), ( None, [ Symbol( "201", ), ], ), ( None, [ Symbol( "202", ), ], ), ( None, [ Symbol( "203", ), ], ), ( None, [ Symbol( "204", ), ], ), ( None, [ Symbol( "205", ), ], ), ( None, [ Symbol( "206", ), ], ), ( None, [ Symbol( "207", ), ], ), ( None, [ Symbol( "208", ), ], ), ( None, [ Symbol( "209", ), ], ), ( None, [ Symbol( "210", ), ], ), ( None, [ Symbol( "211", ), ], ), ( None, [ Symbol( "212", ), ], ), ( None, [ Symbol( "213", ), ], ), ( None, [ Symbol( "214", ), ], ), ( None, [ Symbol( "215", ), ], ), ( None, [ Symbol( "216", ), ], ), ( None, [ Symbol( "217", ), ], ), ( None, [ Symbol( "218", ), ], ), ( None, [ Symbol( "219", ), ], ), ( None, [ Symbol( "220", ), ], ), ( None, [ Symbol( "221", ), ], ), ( None, [ Symbol( "222", ), ], ), ( None, [ Symbol( "223", ), ], ), ( None, [ Symbol( "224", ), ], ), ( None, [ Symbol( "225", ), ], ), ( None, [ Symbol( "226", ), ], ), ( None, [ Symbol( "227", ), ], ), ( None, [ Symbol( "228", ), ], ), ( None, [ Symbol( "229", ), ], ), ( None, [ Symbol( "230", ), ], ), ( None, [ Symbol( "231", ), ], ), ( None, [ Symbol( "232", ), ], ), ( None, [ Symbol( "233", ), ], ), ( None, [ Symbol( "234", ), ], ), ( None, [ Symbol( "235", ), ], ), ( None, [ Symbol( "236", ), ], ), ( None, [ Symbol( "237", ), ], ), ( None, [ Symbol( "238", ), ], ), ( None, [ Symbol( "239", ), ], ), ( None, [ Symbol( "240", ), ], ), ( None, [ Symbol( "241", ), ], ), ( None, [ Symbol( "242", ), ], ), ( None, [ Symbol( "243", ), ], ), ( None, [ Symbol( "244", ), ], ), ( None, [ Symbol( "245", ), ], ), ( None, [ Symbol( "246", ), ], ), ( None, [ Symbol( "247", ), ], ), ( None, [ Symbol( "248", ), ], ), ( None, [ Symbol( "249", ), ], ), ( None, [ Symbol( "250", ), ], ), ( None, [ Symbol( "251", ), ], ), ( None, [ Symbol( "252", ), ], ), ( None, [ Symbol( "253", ), ], ), ( None, [ Symbol( "254", ), ], ), ( None, [ Symbol( "255", ), ], ), ( None, [ Symbol( "256", ), ], ), ], line: 33, column: 1, }, ], ], line: 33, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "24.5", ), Operator( ( "+", true, ), ), Symbol( "0.6", ), Operator( ( "==", true, ), ), Symbol( "25.1", ), ], ], ), ], line: 33, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "foo", ), ], ), [ Lambda { args: [ "self", "x", ], body: CodeBlock { start: 537, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 35, }, ], ], ), ), ], end: 544, }, line: 35, column: 19, }, ], ), ( Some( [ Symbol( "x", ), ], ), [ Symbol( "10", ), ], ), ], line: 35, column: 24, }, ], ], line: 35, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "t", ), ], line: 35, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 36, }, ], ], line: 36, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ":", ), Symbol( "foo", ), Call( [ [ Symbol( "1.5", ), ], ], ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "11.5", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "t", ), Symbol( ":", ), Symbol( "foo", ), Call( [ [ Symbol( "0.5", ), ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Symbol( "10.5", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "24.3", ), Operator( ( "==", true, ), ), Symbol( "24.3", ), ], ], ), ], line: 38, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 590, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 40, }, ], ], ), ), ], end: 595, }, line: 40, column: 11, }, ], ), Ident { expr: [ Call( [], ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 39, }, ], end: 609, }, line: 41, column: 1, }, Ident { expr: [ Symbol( "foo", ), Call( [], ), ], line: 41, }, Alter { names: [ Ident { expr: [ Symbol( "foo", ), ], line: 44, }, ], values: [ [ Symbol( "nil", ), ], ], line: 47, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "_soft", ), ], line: 47, }, ], body: CodeBlock { start: 618, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 621, }, next: None, line: 47, column: 6, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing large programs (>64k)\"", ), ], ], ), ], line: 47, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 49, }, ], values: [ [ MultilineString( "[[$\n\nlocal a,b\n\nb = {$1$\n b30009 = 65534,\n b30010 = 65535,\n b30011 = 65536,\n b30012 = 65537,\n b30013 = 16777214,\n b30014 = 16777215,\n b30015 = 16777216,\n b30016 = 16777217,\n b30017 = 4294967294,\n b30018 = 4294967295,\n b30019 = 4294967296,\n b30020 = 4294967297,\n b30021 = -65534,\n b30022 = -65535,\n b30023 = -65536,\n b30024 = -4294967297,\n b30025 = 15012.5,\n $2$\n};\n\nassert(b.a50008 == 25004 and b[\"a11\"] == 5.5)\nassert(b.a33007 == 16503.5 and b.a50009 == 25004.5)\nassert(b[\"b\"..30024] == -4294967297)\n\nfunction b:xxx (a,b) return a+b end\nassert(b:xxx(10, 12) == 22) -- pushself with non-constant index\nb.xxx = nil\n\ns = 0; n=0\nfor a,b in pairs(b) do s=s+b; n=n+1 end\nassert(s==13977183656.5 and n==70001)\n\n\na = nil; b = nil\nprint'+'\n\nfunction f(x) b=x end\n\na = f{$3$} or 10\n\nassert(a==10)\nassert(b[1] == \"a10\" and b[2] == 5 and b[#b-1] == \"a50009\")\n\n\nfunction xxxx (x) return b[x] end\n\nassert(xxxx(3) == \"a11\")\n\na = nil; b=nil\nxxxx = nil\n\nreturn 10\n\n]]", ), ], ], line: 110, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 110, }, ], values: [ [ Table { data: [ ( None, [ Lambda { args: [], body: CodeBlock { start: 632, code: [ ForLoop { iter: "i", start: [ Symbol( "10", ), ], end: [ Symbol( "50009", ), ], step: None, code: CodeBlock { start: 7, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Symbol( "'a'", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 116, }, ], [ Symbol( "' = '", ), ], [ Symbol( "5", ), Operator( ( "+", true, ), ), Expr( [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 116, }, Operator( ( "-", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 116, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 116, }, ], [ Symbol( "',\\n'", ), ], ], ), ], line: 116, }, ], end: 32, }, line: 117, column: 1, }, ], end: 665, }, line: 118, column: 1, }, ], ), ( None, [ Lambda { args: [], body: CodeBlock { start: 669, code: [ ForLoop { iter: "i", start: [ Symbol( "30026", ), ], end: [ Symbol( "50009", ), ], step: None, code: CodeBlock { start: 7, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Symbol( "'b'", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 122, }, ], [ Symbol( "' = '", ), ], [ Symbol( "15013", ), Operator( ( "+", true, ), ), Expr( [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 122, }, Operator( ( "-", true, ), ), Symbol( "30026", ), ], ), Ident { expr: [], line: 122, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 122, }, ], [ Symbol( "',\\n'", ), ], ], ), ], line: 122, }, ], end: 32, }, line: 123, column: 1, }, ], end: 702, }, line: 124, column: 1, }, ], ), ( None, [ Lambda { args: [], body: CodeBlock { start: 706, code: [ ForLoop { iter: "i", start: [ Symbol( "10", ), ], end: [ Symbol( "50009", ), ], step: None, code: CodeBlock { start: 7, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Symbol( "'\"a'", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 128, }, ], [ Symbol( "'\", '", ), ], [ Symbol( "5", ), Operator( ( "+", true, ), ), Expr( [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 128, }, Operator( ( "-", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 128, }, Operator( ( "/", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 128, }, ], [ Symbol( "',\\n'", ), ], ], ), ], line: 128, }, ], end: 32, }, line: 129, column: 1, }, ], end: 739, }, line: 130, column: 1, }, ], ), ], line: 131, column: 1, }, ], ], line: 131, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "file", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 133, }, ], ], line: 133, column: 7, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "output", ), Call( [ [ Ident { expr: [ Symbol( "file", ), ], line: 134, }, ], ], ), ], line: 133, }, ForFuncLoop { iters: [ "s", ], expr: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 135, }, ], [ Symbol( "\"$([^$]+)\"", ), ], ], ), ], line: 135, }, ], stop: None, initial: None, code: CodeBlock { start: 766, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 136, }, ], ], ), ], line: 136, }, ], ], line: 137, column: 0, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "n", ), ], line: 137, }, ], body: CodeBlock { start: 11, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 137, }, ], ], ), ], line: 137, }, ], end: 18, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 18, code: [ Ident { expr: [ Symbol( "F", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 137, }, ], ), Symbol( "]", ), Call( [], ), ], line: 137, }, ], end: 25, }, next: None, line: 137, column: 18, }, ), line: 137, column: 18, }, ], end: 792, }, line: 138, column: 1, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [], ), ], line: 138, }, Alter { names: [ Ident { expr: [ Symbol( "result", ), ], line: 139, }, ], values: [ [ Ident { expr: [ Symbol( "dofile", ), Call( [ [ Ident { expr: [ Symbol( "file", ), ], line: 140, }, ], ], ), ], line: 140, }, ], ], line: 140, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "file", ), ], line: 141, }, ], ], ), ], line: 141, }, ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 141, }, Return( Some( [ [ Ident { expr: [ Symbol( "result", ), ], line: 143, }, ], ], ), ), ]