--- source: src/main.rs expression: parsed input_file: test-data/lua5.1-tests/api.lua --- [ IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 2, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 5, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 3, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 3, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\a\\n >>> testC not active: skipping API tests <<<\\n\\a'", ), ], ], ), ], line: 3, }, Return( None, ), ], end: 15, }, next: None, line: 5, column: 1, }, Function { local: false, name: [ Symbol( "tcheck", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 22, code: [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 10, }, ], [ Symbol( "1", ), ], ], ), ], line: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 11, }, ], ], ), ], line: 11, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "t2", ), ], line: 11, }, ], ], ), ], line: 11, }, ], ], ), ], line: 10, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 12, }, ], ], ), ], line: 12, }, ], step: None, code: CodeBlock { start: 36, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 12, }, ], ), Symbol( "]", ), ], line: 12, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 12, }, ], ), Symbol( "]", ), ], line: 12, }, ], ], ), ], line: 12, }, ], end: 49, }, line: 12, column: 25, }, ], end: 72, }, line: 13, column: 1, }, Function { local: false, name: [ Symbol( "pack", ), ], args: [ "...", ], body: CodeBlock { start: 77, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 15, }, ], ], ), ), ], end: 80, }, line: 15, column: 8, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing C API'", ), ], ], ), ], line: 15, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 18, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "d2s", ), Call( [ [ Symbol( "12458954321123", ), ], ], ), ], line: 21, }, ], ], line: 21, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 22, }, ], ], ), ], line: 22, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "s2d", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 23, }, ], ], ), ], line: 23, }, Operator( ( "==", true, ), ), Symbol( "12458954321123", ), ], ], ), ], line: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 23, }, Ident { expr: [ Symbol( "b", ), ], line: 25, }, Ident { expr: [ Symbol( "c", ), ], line: 25, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 25, }, ], ], line: 25, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 26, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 26, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 26, }, ], ], ), ], line: 25, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 26, }, Ident { expr: [ Symbol( "b", ), ], line: 29, }, Ident { expr: [ Symbol( "c", ), ], line: 29, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushbool 1; pushbool 2; pushbool 0; return 3\"", ), ], ], ), ], line: 29, }, ], ], line: 29, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 30, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 30, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 29, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, Ident { expr: [ Symbol( "b", ), ], line: 31, }, Ident { expr: [ Symbol( "c", ), ], line: 31, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushbool 0; pushbool 10; pushnil;\\\n tobool -3; tobool -3; tobool -3; return 3\"", ), ], ], ), ], line: 31, }, ], ], line: 32, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 32, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, Ident { expr: [ Symbol( "b", ), ], line: 36, }, Ident { expr: [ Symbol( "c", ), ], line: 36, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettop; return 2\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 36, }, ], ], line: 36, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "40", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 37, }, ], ], ), ], line: 36, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 37, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 5; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 39, }, ], ], ), ], line: 39, }, ], ], line: 39, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 40, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 40, column: 13, }, ], ], ), ], line: 39, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 40, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 0; settop 15; return 10\"", ), ], [ Symbol( "3", ), ], [ Symbol( "1", ), ], [ Symbol( "23", ), ], ], ), ], line: 42, }, ], ], ), ], line: 42, }, ], ], line: 42, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "n", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "10", ), ], ), Symbol( "]", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 42, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 43, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"remove -2; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 45, }, ], ], ), ], line: 45, }, ], ], line: 45, column: 17, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 46, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 46, column: 13, }, ], ], ), ], line: 45, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 46, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert -1; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 48, }, ], ], ), ], line: 48, }, ], ], line: 48, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 49, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 49, column: 13, }, ], ], ), ], line: 48, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 49, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert 3; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 51, }, ], ], ), ], line: 51, }, ], ], line: 51, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 52, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 52, column: 17, }, ], ], ), ], line: 51, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 52, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace 2; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 54, }, ], ], ), ], line: 54, }, ], ], line: 54, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 55, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 55, column: 15, }, ], ], ), ], line: 54, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 55, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace -2; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 57, }, ], ], ), ], line: 57, }, ], ], line: 57, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 58, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 58, column: 15, }, ], ], ), ], line: 57, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 58, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"remove 3; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 60, }, ], ], ), ], line: 60, }, ], ], line: 60, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 61, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 61, column: 15, }, ], ], ), ], line: 60, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 61, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert 3; pushvalue 3; remove 3; pushvalue 2; remove 2; \\\n insert 2; pushvalue 1; remove 1; insert 1; \\\n insert -2; pushvalue -2; remove -3; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], [ Symbol( "10", ), ], [ Symbol( "40", ), ], [ Symbol( "90", ), ], ], ), ], line: 63, }, ], ], ), ], line: 63, }, ], ], line: 66, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 67, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "7", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "90", ), ], ), ], line: 67, column: 23, }, ], ], ), ], line: 66, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 67, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 5; gettop; return .\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "\"joao\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 69, }, ], ], ), ], line: 69, }, ], ], line: 69, column: 21, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 70, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Symbol( "\"alo23joao12\"", ), ], ), ], line: 70, column: 11, }, ], ], ), ], line: 69, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 70, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawcall 2,-1; gettop; return .\"", ), ], [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 590, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 74, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 74, }, ], ], ), ), ], end: 603, }, line: 74, column: 19, }, ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"joao\"", ), ], ], ), ], line: 73, }, ], ], ), ], line: 73, }, ], ], line: 74, column: 25, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 75, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "6", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "\"alo\"", ), ], ), ( None, [ Symbol( "\"joao\"", ), ], ), ], line: 75, column: 21, }, ], ], ), ], line: 74, }, DoBlock( CodeBlock { start: 632, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 78, column: 5, }, ], ], line: 79, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 12, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 79, }, ], ), Symbol( "]", ), ], line: 79, }, ], values: [ [ Symbol( "true", ), ], ], line: 79, column: 6, }, ], end: 19, }, line: 79, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "999", ), ], ), Symbol( "]", ), ], line: 79, }, ], values: [ [ Symbol( "10", ), ], ], line: 80, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[call 1 -1; pop 1; tostring -1; return 1]]", ), ], [ Ident { expr: [ Symbol( "unpack", ), ], line: 80, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 80, }, ], ], ), ], line: 80, }, ], ], line: 80, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 81, }, Operator( ( "==", true, ), ), Symbol( "\"10\"", ), ], ], ), ], line: 80, }, ], end: 678, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan 2 5, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 86, }, ], ], ), ], line: 82, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan 5 2, return 1\"", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 87, }, ], ], ), ], line: 86, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan 2 -3, return 1\"", ), ], [ Symbol( "\"4\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"3\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], ], ), ], line: 88, }, ], ], ), ], line: 87, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan -3 2, return 1\"", ), ], [ Symbol( "\"3\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"4\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], ], ), ], line: 89, }, ], ], ), ], line: 88, }, Variable { names: [ ( "b", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__lt", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 776, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 91, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 91, }, ], ], ), ), ], end: 787, }, line: 91, column: 23, }, ], ), ], line: 91, column: 24, }, ], ], line: 92, column: 0, }, Variable { names: [ ( "a1", false, ), ( "a3", false, ), ( "a4", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 92, column: 12, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 92, }, ], ], ), ], line: 92, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ], line: 93, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 93, }, ], ], ), ], line: 92, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 94, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 94, }, ], ], ), ], line: 93, }, ], ], line: 94, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan 2 5, return 1\"", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 95, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 95, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 95, }, ], ], ), ], line: 94, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan 5 -6, return 1\"", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 96, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 96, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 96, }, ], ], ), ], line: 95, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 96, }, Ident { expr: [ Symbol( "b", ), ], line: 97, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"lessthan 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 97, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 97, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 97, }, ], ], line: 97, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 97, }, Function { local: false, name: [ Symbol( "count", ), ], args: [ "x", "n", ], body: CodeBlock { start: 902, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 104, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 104, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 105, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [ [ MultilineString( "[[\n isnumber %d;\n isstring %d;\n isfunction %d;\n iscfunction %d;\n istable %d;\n isuserdata %d;\n isnil %d;\n isnull %d;\n return 8\n ]]", ), ], ], line: 115, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 115, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 116, }, ], ], ), ], line: 116, }, ], ], line: 117, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ( "e", false, ), ( "f", false, ), ( "g", false, ), ( "h", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 117, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 117, }, ], ], ), ], line: 117, }, ], ], line: 118, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 118, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 118, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 118, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 118, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 118, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "f", ), ], line: 118, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "g", ), ], line: 118, }, Operator( ( "+", true, ), ), Expr( [ Symbol( "100", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "h", ), ], line: 118, }, ], ), Ident { expr: [], line: 118, }, ], ], ), ), ], end: 981, }, line: 119, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 121, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 119, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'32'", ), ], ], ), ], line: 123, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 122, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Table { data: [], line: 124, column: 6, }, ], ], ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 123, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 125, }, ], ], ), ], line: 125, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1034, code: [], end: 1035, }, line: 126, column: 8, }, ], ], ), ], line: 126, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 126, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 128, }, ], ], ), ], line: 128, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 127, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "15", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 128, }, Function { local: false, name: [ Symbol( "to", ), ], args: [ "s", "x", "n", ], body: CodeBlock { start: 1079, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 134, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 134, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 135, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%s %d; return 1\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 135, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 135, }, ], ], ), ], line: 135, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 135, }, ], ], ), ], line: 135, }, ], ], ), ), ], end: 1103, }, line: 136, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Table { data: [], line: 138, column: 8, }, ], ], ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 136, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "\"alo\"", ), ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 140, }, Operator( ( "==", true, ), ), Symbol( "\"12\"", ), ], ], ), ], line: 139, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], [ Symbol( "3", ), ], ], ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [], line: 142, column: 8, }, ], ], ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "\"alo\\0\\0a\"", ), ], ], ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "6", ), ], ], ), ], line: 142, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 144, }, ], ], ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 143, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "101", ), ], ], ), ], line: 145, }, ], ], ), ], line: 145, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 144, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 146, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 145, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "12", ), ], [ Symbol( "3", ), ], ], ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Table { data: [], line: 148, column: 8, }, ], ], ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"12\"", ), ], ], ), ], line: 149, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 148, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"s2\"", ), ], ], ), ], line: 150, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 149, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "1", ), ], [ Symbol( "20", ), ], ], ), ], line: 151, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 150, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 151, }, ], values: [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tocfunction\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 152, }, ], ], ), ], line: 152, }, ], ], line: 152, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 153, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 153, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 153, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 153, }, ], ], ), ], line: 152, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 153, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n loadstring 2; call 0,1;\n pushvalue 3; insert -2; call 1, 1;\n call 0, 0;\n return 1\n]]", ), ], [ Symbol( "\"x=150\"", ), ], [ Lambda { args: [ "a", ], body: CodeBlock { start: 1320, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 163, }, Return( Some( [ [ Symbol( "3", ), ], ], ), ), ], end: 1330, }, line: 163, column: 18, }, ], ], ), ], line: 158, }, ], ], line: 163, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 165, }, ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "150", ), ], ], ), ], line: 163, }, Function { local: false, name: [ Symbol( "check3", ), ], args: [ "p", "...", ], body: CodeBlock { start: 1351, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), Symbol( ".", ), Symbol( "n", ), ], line: 168, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 168, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 169, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 169, }, ], ], ), ], line: 169, }, ], ], ), ], line: 168, }, ], end: 1374, }, line: 170, column: 1, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\":1:\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadstring 2; gettop; return .\"", ), ], [ Symbol( "\"x=\"", ), ], ], ), ], line: 171, }, ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"cannot read\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; gettop; return .\"", ), ], [ Symbol( "\".\"", ), ], ], ), ], line: 172, }, ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"cannot open xxxx\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; gettop; return .\"", ), ], [ Symbol( "\"xxxx\"", ), ], ], ), ], line: 173, }, ], ], ), ], line: 172, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 173, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ( Some( [ Symbol( "y", ), ], ), [ Symbol( "12", ), ], ), ], line: 177, column: 11, }, ], ], line: 177, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 177, }, Ident { expr: [ Symbol( "y", ), ], line: 178, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; pushvalue 4; gettable 2; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 178, }, ], [ Symbol( "3", ), ], [ Symbol( "\"y\"", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 178, }, ], ], line: 179, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 181, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "15", ), ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 182, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 181, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 183, }, ], ), Symbol( "]", ), ], line: 182, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 183, }, ], ], line: 183, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 183, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 184, }, ], ], ), ], line: 184, }, ], ], line: 184, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 185, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 185, }, ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 186, }, ], [ Symbol( "\"x\"", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 187, }, ], ), Symbol( "]", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), ], ], ), ], line: 186, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 187, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "p", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 189, }, ], ), ], line: 189, column: 9, }, ], [ Table { data: [], line: 189, column: 12, }, ], ], ), ], line: 189, }, ], ], line: 189, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 190, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 189, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 1545, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "p", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 190, }, ], ), Symbol( "]", ), ], line: 190, }, ], ], ), ), ], end: 1553, }, line: 190, column: 21, }, ], ], line: 190, column: 21, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 190, }, Ident { expr: [ Symbol( "x", ), ], line: 191, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 3, return 2\"", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 191, }, ], [ Symbol( "20", ), ], [ Symbol( "35", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 191, }, ], ], line: 191, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 192, }, Operator( ( "==", true, ), ), Symbol( "15", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 192, }, Operator( ( "==", true, ), ), Symbol( "35", ), ], ], ), ], line: 191, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 193, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 192, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 1596, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 193, }, ], ), Symbol( "]", ), ], line: 193, }, ], ], ), ), ], end: 1602, }, line: 193, column: 19, }, ], ], line: 193, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 194, }, ], ], ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 193, }, ], values: [ [ Lambda { args: [ "t", "i", "v", ], body: CodeBlock { start: 1617, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 194, }, ], ), Symbol( "]", ), ], line: 194, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 194, }, ], ], line: 194, column: 6, }, ], end: 1624, }, line: 194, column: 22, }, ], ], line: 194, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 194, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert 2; gettable -5; return 1\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"y\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 195, }, ], ], ), ], line: 195, }, ], ], line: 195, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 195, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 196, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 197, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "16", ), ], ], ), ], line: 197, }, ], ], line: 197, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "16", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 197, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 199, }, ], ), Symbol( "]", ), ], line: 198, }, ], values: [ [ Symbol( "'xuxu'", ), ], ], line: 199, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 199, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 200, }, ], ], ), ], line: 200, }, ], ], line: 200, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "'xuxu'", ), ], ], ), ], line: 200, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 202, }, ], [ Symbol( "19", ), ], ], ), ], line: 201, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 203, }, ], ), Symbol( "]", ), ], line: 203, }, Operator( ( "==", true, ), ), Symbol( "19", ), ], ], ), ], line: 202, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 203, }, ], values: [ [ Table { data: [], line: 206, column: 4, }, ], ], line: 206, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 206, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; gettop; return .\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 207, }, ], [ Symbol( "nil", ), ], ], ), ], line: 207, }, ], ], ), ], line: 207, }, ], ], line: 207, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 208, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 208, }, ], ), ], line: 208, column: 11, }, ], ], ), ], line: 207, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 208, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "3", ), ], ), ], line: 209, column: 7, }, ], ], line: 209, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 209, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; gettop; return .\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 210, }, ], [ Symbol( "nil", ), ], ], ), ], line: 210, }, ], ], ), ], line: 210, }, ], ], line: 210, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 211, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 211, }, ], ), ( None, [ Symbol( "'a'", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 211, column: 15, }, ], ], ), ], line: 210, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 211, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; pop 1; next; gettop; return .\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 212, }, ], [ Symbol( "nil", ), ], ], ), ], line: 212, }, ], ], ), ], line: 212, }, ], ], line: 212, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 213, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 213, }, ], ), ], line: 213, column: 11, }, ], ], ), ], line: 212, }, DoBlock( CodeBlock { start: 1816, code: [ Variable { names: [ ( "A", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 220, }, ], ], line: 220, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 220, }, Ident { expr: [ Symbol( "b", ), ], line: 221, }, Ident { expr: [ Symbol( "c", ), ], line: 221, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U0; pushvalue U1; pushvalue U2; return 3]]", ), ], ], ), ], line: 221, }, ], ], line: 221, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 222, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 222, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 222, }, ], ], ), ], line: 222, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 221, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 222, }, Ident { expr: [ Symbol( "b", ), ], line: 223, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[tostring U3; tonumber U4; return 2]]", ), ], ], ), ], line: 223, }, ], ], line: 223, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 224, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 224, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 223, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushnum 100; pushnum 200; replace U2; replace U1]]", ), ], ], ), ], line: 224, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 225, }, Ident { expr: [ Symbol( "c", ), ], line: 226, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 226, }, ], ], line: 226, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 227, }, Operator( ( "==", true, ), ), Symbol( "100", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 227, }, Operator( ( "==", true, ), ), Symbol( "200", ), ], ], ), ], line: 226, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[replace U2; replace U1]]", ), ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 228, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "2", ), ], ), ], line: 228, column: 15, }, ], ], ), ], line: 227, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 228, }, Ident { expr: [ Symbol( "c", ), ], line: 229, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 229, }, ], ], line: 229, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 230, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( ".", ), Symbol( "x", ), ], line: 230, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 229, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkmemory", ), Call( [], ), ], line: 230, }, ], end: 1934, }, ), Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 234, }, ], ], line: 234, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 235, }, ], [ Symbol( "1", ), ], ], ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 236, }, ], [ Symbol( "2", ), ], ], ), ], line: 235, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 237, }, ], [ Symbol( "3", ), ], ], ), ], line: 236, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 238, }, ], [ Symbol( "2", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 237, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 239, }, ], [ Symbol( "2", ), ], ], ), ], line: 239, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 238, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue G; return 1\"", ), ], ], ), ], line: 244, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 244, }, ], ], ), ], line: 239, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue E; return 1\"", ), ], ], ), ], line: 245, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 245, }, ], ], ), ], line: 244, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 246, column: 5, }, ], ], line: 246, column: 5, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace E; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 247, }, ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue G; return 1\"", ), ], ], ), ], line: 248, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 248, }, ], ], ), ], line: 247, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue E; return 1\"", ), ], ], ), ], line: 249, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 249, }, ], ], ), ], line: 248, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getfenv", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 250, }, ], ], ), ], line: 250, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 250, }, ], ], ), ], line: 249, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getfenv", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), ], line: 251, }, ], ], ), ], line: 251, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 251, }, ], ], ), ], line: 250, }, Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newuserdata 0; return 1\"", ), ], ], ), ], line: 253, }, ], ], line: 253, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getfenv", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 254, }, ], ], ), ], line: 254, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 254, }, ], ], ), ], line: 253, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 254, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushcclosure 0; return 1\"", ), ], ], ), ], line: 256, }, ], ], line: 256, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getfenv", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 257, }, ], ], ), ], line: 257, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 257, }, ], ], ), ], line: 256, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setfenv", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 258, }, ], [ Ident { expr: [ Symbol( "_G", ), ], line: 258, }, ], ], ), ], line: 257, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue E; return 1\"", ), ], ], ), ], line: 259, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 259, }, ], ], ), ], line: 258, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "newproxy", ), Call( [], ), ], line: 261, }, ], ], line: 261, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getfenv", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 262, }, ], ], ), ], line: 262, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 262, }, ], ], ), ], line: 261, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setfenv", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 263, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 263, }, ], ], ), ], line: 263, }, ], ], ), ], line: 262, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getfenv", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 264, }, ], ], ), ], line: 264, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 264, }, ], ], ), ], line: 263, }, Variable { names: [ ( "i", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 271, column: 8, }, ], ], ), ], line: 271, }, ], ], line: 271, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 272, }, ], ], ), ], line: 271, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 273, column: 7, }, ], ], ), ], line: 273, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 273, }, ], ], ), ], line: 272, }, Alter { names: [ Ident { expr: [ Symbol( "Arr", ), ], line: 273, }, ], values: [ [ Table { data: [], line: 275, column: 4, }, ], ], line: 275, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Lim", ), ], line: 275, }, ], values: [ [ Symbol( "100", ), ], ], line: 277, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 277, }, ], step: None, code: CodeBlock { start: 2205, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 278, }, ], ), Symbol( "]", ), ], line: 278, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 278, column: 11, }, ], ], ), ], line: 278, }, ], ], line: 278, column: 12, }, ], end: 2218, }, line: 279, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 281, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 279, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 282, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 284, }, ], step: None, code: CodeBlock { start: 2262, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 285, }, ], ), Symbol( "]", ), ], line: 285, }, ], ], ), ], line: 285, }, ], end: 2272, }, line: 286, column: 1, }, Function { local: false, name: [ Symbol( "printlocks", ), ], args: [], body: CodeBlock { start: 2276, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable R; return 1\"", ), ], [ Symbol( "\"n\"", ), ], ], ), ], line: 289, }, ], ], line: 289, column: 11, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 290, }, ], ], ), ], line: 289, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 291, }, ], step: None, code: CodeBlock { start: 24, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 292, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable R; return 1\"", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 292, }, ], ], ), ], line: 292, }, ], ], ), ], line: 292, }, ], end: 38, }, line: 293, column: 1, }, ], end: 2315, }, line: 294, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 297, }, ], step: None, code: CodeBlock { start: 2322, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 298, }, ], ), Symbol( "]", ), ], line: 298, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 298, column: 11, }, ], ], ), ], line: 298, }, ], ], line: 298, column: 12, }, ], end: 2335, }, line: 299, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 301, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 2344, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 302, }, ], ), Symbol( "]", ), ], line: 302, }, ], ], ), ], line: 302, }, ], end: 2354, }, line: 303, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 305, }, ], ], ), ], line: 305, }, ], ], ), ], line: 305, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 303, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 308, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 305, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 308, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 311, column: 8, }, ], ], ), ], line: 311, }, ], ], line: 311, column: 9, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 311, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 315, }, ], ], ), ], line: 315, }, ], ], ), ], line: 315, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 313, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 315, }, ], values: [ [ Table { data: [], line: 319, column: 4, }, ], ], line: 319, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 319, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "0", ), ], ), ], line: 320, column: 7, }, ], ], line: 320, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 320, }, ], values: [ [ Symbol( "nil", ), ], ], line: 321, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 321, }, ], values: [ [ Symbol( "nil", ), ], ], line: 322, column: 0, }, Variable { names: [ ( "F", false, ), ], values: [], line: 322, column: 2, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 322, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 2435, code: [ Variable { names: [ ( "udval", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 324, }, ], ], ), ], line: 324, }, ], ], line: 324, column: 9, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 325, }, ], [ Ident { expr: [ Symbol( "udval", ), ], line: 325, }, ], ], ), ], line: 324, }, Variable { names: [ ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 326, }, ], ], line: 326, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 326, }, ], values: [ [ Symbol( "nil", ), ], ], line: 327, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 328, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 328, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 328, }, ], ], ), ], line: 327, }, Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"table.insert({}, {})\"", ), ], ], ), Call( [], ), ], line: 328, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 329, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 331, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 331, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 331, }, ], ], ), ], line: 330, }, Variable { names: [ ( "dummy", false, ), ], values: [ [ Table { data: [], line: 332, column: 5, }, ], ], line: 333, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 333, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 74, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 334, }, ], ], ), ], line: 334, }, Operator( ( "==", true, ), ), Symbol( "\"userdata\"", ), ], ], ), ], line: 334, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 335, }, ], ], ), ], line: 335, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "B", ), ], line: 335, }, ], ], ), ], line: 334, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 336, }, ], ], ), ], line: 335, }, ], end: 101, }, next: None, line: 337, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 337, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 338, }, ], ], line: 338, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 338, }, ], values: [ [ Ident { expr: [ Symbol( "udval", ), ], line: 339, }, ], ], line: 340, column: 0, }, Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 2549, }, line: 341, column: 1, }, ], ], line: 341, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "__gc", ), ], line: 341, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), ], line: 342, }, ], ], line: 345, column: 0, }, DoBlock( CodeBlock { start: 2555, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 346, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 346, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 348, }, ], ], line: 348, column: 8, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "5001", ), ], ], ), ], line: 349, }, ], ], line: 349, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"objsize 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 350, }, ], ], ), ], line: 350, }, Operator( ( "==", true, ), ), Symbol( "5001", ), ], ], ), ], line: 349, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 351, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 351, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], ], ), ], line: 350, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 351, }, ], values: [ [ Symbol( "nil", ), ], ], line: 352, column: 3, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 352, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 354, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 354, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 353, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 354, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 356, }, ], ], line: 356, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 356, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 84, code: [ Ident { expr: [ Symbol( "newproxy", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 358, }, ], end: 89, }, line: 358, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 359, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 359, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 358, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 359, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 361, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 361, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 360, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 361, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 363, }, ], ], line: 363, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 363, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 364, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 365, }, ], values: [ [ Ident { expr: [ Symbol( "newproxy", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 366, }, ], ], line: 366, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 367, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 366, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 143, code: [], end: 144, }, line: 367, column: 11, }, ], ], line: 368, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 151, code: [ Ident { expr: [ Symbol( "newproxy", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 368, }, ], ], ), ], line: 368, }, ], end: 156, }, line: 368, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 369, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 369, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 368, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 369, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 371, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 371, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 370, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 371, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 373, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 373, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 372, }, ], end: 2751, }, ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 374, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 377, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 380, }, ], ], line: 380, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 380, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 380, }, ], ], ), ], line: 380, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 380, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 380, }, ], ], ), ], line: 380, }, ], ], line: 380, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 380, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 381, }, ], ], line: 381, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 381, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 381, }, ], ], ), ], line: 381, }, Alter { names: [ Ident { expr: [ Symbol( "nb", ), ], line: 381, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 381, }, ], ], ), ], line: 381, }, ], ], line: 381, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 381, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 382, }, ], ], line: 382, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 382, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 382, }, ], ], ), ], line: 382, }, Alter { names: [ Ident { expr: [ Symbol( "nc", ), ], line: 382, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 382, }, ], ], ), ], line: 382, }, ], ], line: 382, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 382, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 385, }, ], ], line: 385, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 385, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 386, }, ], ], line: 386, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 388, }, ], ], ), ], line: 388, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 388, }, ], ], ), ], line: 388, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 386, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 388, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 390, }, ], ], ), ], line: 390, }, ], ], line: 390, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "e", ), ], line: 390, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 391, }, ], ], ), ], line: 391, }, ], ], line: 391, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 391, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 392, }, ], ], ), ], line: 392, }, ], ], line: 392, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 392, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 393, }, ], ], ), ], line: 393, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 393, }, ], ], ), ], line: 393, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 393, }, ], ], ), ], line: 393, }, ], ), ], line: 393, column: 24, }, ], ], line: 393, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 394, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 394, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 394, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 394, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 394, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 394, }, ], ], ), ], line: 393, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 394, }, ], values: [ [ Symbol( "nil", ), ], ], line: 396, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 396, }, ], values: [ [ Symbol( "nil", ), ], ], line: 396, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 396, }, ], values: [ [ Symbol( "nil", ), ], ], line: 396, column: 12, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 397, }, ], ], ), ], line: 396, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 397, }, ], ], ), ], line: 397, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 397, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 402, }, ], ], ), ], line: 402, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 402, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nc", ), ], line: 402, }, ], ], ), ], line: 399, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 402, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 404, }, ], ], ), ], line: 404, }, ], ], line: 404, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 405, }, ], ], ), ], line: 405, }, Operator( ( "==", true, ), ), Symbol( "'userdata'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 405, }, ], ], ), ], line: 405, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tt", ), ], line: 405, }, ], ], ), ], line: 404, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 405, }, ], values: [ [ Symbol( "nil", ), ], ], line: 406, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "b", ), ], line: 406, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 407, }, ], ], line: 407, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 407, }, ], values: [ [ Symbol( "nil", ), ], ], line: 408, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 408, }, ], values: [ [ Symbol( "nil", ), ], ], line: 409, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 409, }, ], values: [ [ Symbol( "nil", ), ], ], line: 410, column: 3, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 411, }, ], ], ), ], line: 410, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 411, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 412, }, ], ], line: 412, column: 8, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 413, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 413, }, ], ), ], line: 413, column: 11, }, ], ], ), ], line: 412, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 413, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 414, }, ], ], ), ], line: 414, }, ], ], line: 414, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 414, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 416, }, ], ], ), ], line: 416, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 415, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 418, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n5", ), ], line: 418, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 418, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nb", ), ], line: 418, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 418, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), ], line: 418, }, ], ], ), ], line: 416, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 418, }, Ident { expr: [ Symbol( "na", ), ], line: 421, }, ], values: [ [ Table { data: [], line: 421, column: 6, }, ], [ Table { data: [], line: 421, column: 9, }, ], ], line: 422, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "30", ), ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 3123, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 423, }, ], ), Symbol( "]", ), ], line: 423, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 423, }, ], ], line: 423, column: 11, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 424, }, ], ), Symbol( "]", ), ], line: 424, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 424, }, ], ), ], line: 424, column: 14, }, ], ], ), ], line: 423, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 425, }, ], ), Symbol( "]", ), ], line: 424, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 425, }, ], ), Symbol( "]", ), ], line: 425, }, ], ], ), ], line: 425, }, ], ], line: 425, column: 14, }, ], end: 3164, }, line: 426, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 426, }, ], values: [ [ Table { data: [], line: 427, column: 4, }, ], ], line: 427, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 427, }, ], values: [ [ Symbol( "nil", ), ], ], line: 428, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 428, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 429, }, ], ], ), ], line: 429, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 428, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "30", ), ], step: None, code: CodeBlock { start: 3193, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 430, }, ], ), Symbol( "]", ), ], line: 430, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 430, }, ], ), Symbol( "]", ), ], line: 430, }, ], ], ), ], line: 430, }, ], end: 3206, }, line: 430, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 430, }, ], values: [ [ Symbol( "nil", ), ], ], line: 434, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 434, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 3218, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 435, }, ], ), Symbol( "]", ), ], line: 435, }, ], ], ), ], line: 435, }, ], end: 3228, }, line: 436, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 436, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "41", ), ], ], ), ], line: 438, }, ], ], line: 438, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 438, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 438, }, ], ), ], line: 438, column: 20, }, ], ], ), ], line: 438, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"objsize 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 439, }, ], ], ), ], line: 439, }, Operator( ( "==", true, ), ), Symbol( "41", ), ], ], ), ], line: 438, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 439, }, ], values: [ [ Table { data: [], line: 440, column: 4, }, ], ], line: 440, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 440, }, ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "x", ), ], line: 441, }, ], ), [ Symbol( "1", ), ], ), ], line: 441, column: 9, }, ], ], line: 441, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 441, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 442, }, ], ], ), ], line: 442, }, ], ], line: 442, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 442, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 445, }, ], ], ), ], line: 445, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 443, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 446, }, ], ], ), ], line: 446, }, ], stop: None, initial: None, code: CodeBlock { start: 3305, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 446, }, ], ), Symbol( "]", ), ], line: 446, }, ], values: [ [ Symbol( "nil", ), ], ], line: 446, column: 6, }, ], end: 3312, }, line: 446, column: 15, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 446, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 448, }, ], ], ), ], line: 448, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 448, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 448, }, ], ], ), ], line: 447, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 4; return 1\"", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 451, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 451, }, ], [ Symbol( "20", ), ], ], ), ], line: 451, }, ], ], ), ], line: 448, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 3 2; return 1\"", ), ], [ Symbol( "'alo'", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 452, }, ], ], ), ], line: 451, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 3; return 1\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 453, }, ], ], ), ], line: 452, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 3; return 1\"", ), ], [ Table { data: [], line: 454, column: 11, }, ], [ Table { data: [], line: 454, column: 14, }, ], ], ), ], line: 454, }, ], ], ), ], line: 453, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 3; return 1\"", ), ], ], ), ], line: 455, }, ], ], ), ], line: 454, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 3; return 1\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 456, }, ], ], ), ], line: 455, }, DoBlock( CodeBlock { start: 3415, code: [ Variable { names: [ ( "map", false, ), ], values: [ [ Table { data: [], line: 460, column: 5, }, ], ], line: 461, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__eq", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 461, }, ], ), Symbol( "]", ), ], line: 461, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 461, }, ], ), Symbol( "]", ), ], line: 461, }, ], ], ), ), ], end: 28, }, line: 461, column: 23, }, ], ), ], line: 461, column: 24, }, ], ], line: 462, column: 0, }, Function { local: true, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 35, code: [ Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 463, }, ], ], line: 463, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 464, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 464, }, ], ], ), ], line: 463, }, Alter { names: [ Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "u", ), ], line: 465, }, ], ), Symbol( "]", ), ], line: 464, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 465, }, ], ], line: 466, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "u", ), ], line: 466, }, ], ], ), ), ], end: 61, }, line: 467, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 468, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 468, }, ], ], ), ], line: 467, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 469, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "11", ), ], ], ), ], line: 469, }, ], ], ), ], line: 468, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 3; return 1\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 470, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 470, }, ], ], ), ], line: 470, }, ], ], ), ], line: 469, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"equal 2 3; return 1\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 471, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 471, }, ], ], ), ], line: 471, }, ], ], ), ], line: 470, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 471, }, ], values: [ [ Symbol( "nil", ), ], ], line: 472, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 473, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 473, }, ], ], ), ], line: 472, }, ], end: 3557, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 474, }, DoBlock( CodeBlock { start: 3560, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 482, column: 5, }, ], ], line: 483, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "20", ), ], step: None, code: CodeBlock { start: 12, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 484, }, ], ), Symbol( "]", ), ], line: 484, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 484, }, ], ], ), ], line: 484, }, ], ], line: 484, column: 11, }, ], end: 24, }, line: 485, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "20", ), ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 33, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 487, }, ], ), Symbol( "]", ), ], line: 487, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"error inside gc\"", ), ], ], ), ], line: 487, }, ], end: 21, }, line: 487, column: 21, }, ], ), ], line: 487, column: 22, }, ], ], ), ], line: 487, }, ], end: 57, }, line: 488, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Symbol( "20", ), ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 66, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 490, }, ], ), Symbol( "]", ), ], line: 490, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"A=A+1\"", ), ], ], ), Call( [], ), ], line: 490, }, ], end: 23, }, line: 490, column: 23, }, ], ), ], line: 490, column: 24, }, ], ], ), ], line: 490, }, ], end: 92, }, line: 491, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "A", ), ], line: 491, }, ], values: [ [ Symbol( "0", ), ], ], line: 492, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 492, }, ], values: [ [ Symbol( "0", ), ], ], line: 494, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 103, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "xpcall", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 495, }, ], [ Lambda { args: [ "s", ], body: CodeBlock { start: 9, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 495, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 495, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 495, column: 5, }, ], end: 15, }, line: 495, column: 15, }, ], ], ), ], line: 495, }, ], body: CodeBlock { start: 17, code: [ Break, ], end: 19, }, next: None, line: 497, column: 1, }, ], end: 123, }, line: 498, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 499, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 498, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 500, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 499, }, ], end: 3696, }, ), DoBlock( CodeBlock { start: 3697, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 505, column: 5, }, ], ], line: 505, column: 6, }, Variable { names: [ ( "lim", false, ), ], values: [ [ Symbol( "30", ), ], ], line: 506, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 506, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 506, }, ], ), Symbol( "]", ), ], line: 506, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 506, }, ], ], ), ], line: 506, }, ], ], line: 506, column: 11, }, ], end: 29, }, line: 506, column: 19, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 507, }, ], step: None, code: CodeBlock { start: 36, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 507, }, ], ), Symbol( "]", ), ], line: 507, }, ], ], ), ], line: 507, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 507, }, ], ], ), ], line: 507, }, ], end: 51, }, line: 507, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 508, }, ], step: None, code: CodeBlock { start: 58, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 508, }, ], ], ), ], line: 508, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 508, }, ], ), Symbol( "]", ), ], line: 508, }, ], ], ), ], line: 508, }, ], end: 73, }, line: 508, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 509, }, ], step: None, code: CodeBlock { start: 80, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 509, }, ], ), Symbol( "]", ), ], line: 509, }, ], ), Symbol( "]", ), ], line: 509, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 509, }, ], ], line: 509, column: 9, }, ], end: 90, }, line: 509, column: 17, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 510, }, ], step: None, code: CodeBlock { start: 97, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 510, }, ], ], ), ], line: 510, }, ], ), Symbol( "]", ), ], line: 510, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 510, }, ], ], line: 510, column: 11, }, ], end: 109, }, line: 510, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 511, }, ], ], ), ], line: 511, }, ], ], ), ], line: 511, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 510, }, ], end: 3822, }, ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 517, }, ], ], ), ], line: 512, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 517, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 518, }, ], ], line: 518, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 519, }, ], ], ), ], line: 518, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 520, }, ], [ Symbol( "\"function f () return 'alo', 3 end; f()\"", ), ], ], ), ], line: 520, }, ], ], ), Symbol( ".", ), Symbol( "n", ), ], line: 520, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 519, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 520, }, Ident { expr: [ Symbol( "b", ), ], line: 522, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 522, }, ], [ Symbol( "\"return f()\"", ), ], ], ), ], line: 522, }, ], ], line: 522, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 523, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 523, }, Operator( ( "==", true, ), ), Symbol( "'3'", ), ], ], ), ], line: 522, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 525, }, ], [ Symbol( "\"_ERRORMESSAGE = nil\"", ), ], ], ), ], line: 523, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 525, }, Ident { expr: [ Symbol( "b", ), ], line: 527, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 527, }, ], [ Symbol( "\"return sin(1)\"", ), ], ], ), ], line: 527, }, ], ], line: 527, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 528, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 528, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 527, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 528, }, Ident { expr: [ Symbol( "b", ), ], line: 531, }, Ident { expr: [ Symbol( "c", ), ], line: 531, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 531, }, ], [ Symbol( "\"return a+\"", ), ], ], ), ], line: 531, }, ], ], line: 531, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 532, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 532, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 532, }, ], ], ), ], line: 532, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 531, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 534, }, ], ], ), ], line: 532, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 534, }, Ident { expr: [ Symbol( "b", ), ], line: 535, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 535, }, ], [ MultilineString( "[[\n a = strlibopen()\n a = packageopen()\n a = baselibopen(); assert(a == _G and require(\"_G\") == a)\n a = iolibopen(); assert(type(a.read) == \"function\")\n assert(require(\"io\") == a)\n a = tablibopen(); assert(type(a.insert) == \"function\")\n a = dblibopen(); assert(type(a.getlocal) == \"function\")\n a = mathlibopen(); assert(type(a.sin) == \"function\")\n return string.sub('okinama', 1, 2)\n]]", ), ], ], ), ], line: 535, }, ], ], line: 545, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 546, }, Operator( ( "==", true, ), ), Symbol( "\"ok\"", ), ], ], ), ], line: 545, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 548, }, ], ], ), ], line: 546, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 548, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 550, }, ], ], line: 550, column: 7, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 551, }, ], ], ), ], line: 550, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 552, }, ], [ Symbol( "\"a = {}\"", ), ], ], ), ], line: 551, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 553, }, ], [ MultilineString( "[[pushstring a; gettable G; pushstring x; pushnum 1;\n settable -3]]", ), ], ], ), ], line: 552, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 555, }, ], [ Symbol( "\"return a.x\"", ), ], ], ), ], line: 555, }, Operator( ( "==", true, ), ), Symbol( "\"1\"", ), ], ], ), ], line: 554, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 557, }, ], ], ), ], line: 555, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 557, }, ], values: [ [ Symbol( "nil", ), ], ], line: 559, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 559, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 561, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 567, }, Operator( ( "+", true, ), ), Symbol( "5000", ), ], ], ), ], line: 566, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"local a={}; for i=1,100000 do a[i]=i end\"", ), ], ], ), ], line: 568, }, ], ], ), ], line: 568, }, ], ], ), ], line: 567, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "1000000000", ), ], ], ), ], line: 568, }, Function { local: true, name: [ Symbol( "stack", ), ], args: [ "x", ], body: CodeBlock { start: 4067, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 572, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "stack", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 572, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 572, }, ], end: 12, }, next: None, line: 572, column: 12, }, ], end: 4080, }, line: 572, column: 19, }, Function { local: false, name: [ Symbol( "testamem", ), ], args: [ "s", "f", ], body: CodeBlock { start: 4087, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 578, }, Ident { expr: [ Symbol( "stack", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 578, }, Variable { names: [ ( "M", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 580, }, ], ], line: 581, column: 0, }, Variable { names: [ ( "oldM", false, ), ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 581, }, ], ], line: 582, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], ], line: 583, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "M", ), ], line: 584, }, ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 584, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ], line: 584, column: 5, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "M", ), ], line: 585, }, ], ], ), ], line: 584, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 585, }, Ident { expr: [ Symbol( "b", ), ], line: 586, }, ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 586, }, ], ], ), ], line: 586, }, ], ], line: 587, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 587, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 587, }, ], body: CodeBlock { start: 24, code: [ Break, ], end: 26, }, next: None, line: 587, column: 7, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 587, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 589, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 589, }, ], [ Symbol( "\"memory\"", ), ], ], ), ], line: 589, }, ], body: CodeBlock { start: 43, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "1000000000", ), ], ], ), ], line: 590, }, Ident { expr: [ Symbol( "error", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 591, }, ], [ Symbol( "0", ), ], ], ), ], line: 590, }, ], end: 56, }, next: None, line: 592, column: 1, }, ], end: 85, }, line: 593, column: 1, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "1000000000", ), ], ], ), ], line: 593, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\nlimit for \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 595, }, Operator( ( "..", true, ), ), Symbol( "\": \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "M", ), ], line: 595, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "oldM", ), ], line: 595, }, ], ], ), ], line: 594, }, Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 596, }, ], ], ), ), ], end: 4193, }, line: 597, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 597, }, ], values: [ [ Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"state creation\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), ], line: 602, }, ], ], ), ], line: 602, }, ], ], line: 602, column: 10, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 603, }, ], ], ), ], line: 602, }, Function { local: false, name: [ Symbol( "expand", ), ], args: [ "n", "s", ], body: CodeBlock { start: 4217, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 609, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "\"\"", ), ], ], ), ), ], end: 8, }, next: None, line: 609, column: 8, }, Variable { names: [ ( "e", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"=\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 610, }, ], ], ), ], line: 610, }, ], ], line: 611, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"T.doonnewstack([%s[ %s;\\n collectgarbage(); %s]%s])\\n\"", ), ], [ Ident { expr: [ Symbol( "e", ), ], line: 611, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 612, }, ], [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 612, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 612, }, ], ], ), ], line: 612, }, ], [ Ident { expr: [ Symbol( "e", ), ], line: 612, }, ], ], ), ], line: 611, }, ], ], ), ), ], end: 4259, }, line: 613, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "G", ), ], line: 613, }, ], values: [ [ Symbol( "0", ), ], ], line: 615, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 615, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 615, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 615, }, ], ], line: 615, column: 14, }, Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Symbol( "20", ), ], [ Symbol( "\"G=G+1\"", ), ], ], ), ], line: 616, }, ], ], ), Call( [], ), ], line: 615, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "G", ), ], line: 617, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 616, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 617, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"thread creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4302, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doonnewstack", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 620, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 4312, }, line: 621, column: 1, }, ], ], ), ], line: 617, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"loadstring\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4320, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 627, }, ], ], ), ), ], end: 4326, }, line: 628, column: 1, }, ], ], ), ], line: 621, }, Variable { names: [ ( "testprog", false, ), ], values: [ [ MultilineString( "[[\nlocal function foo () return end\nlocal t = {\"x\"}\na = \"aaa\"\nfor _, v in ipairs(t) do a=a..v end\nreturn true\n]]", ), ], ], line: 637, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 637, }, ], values: [ [ Symbol( "nil", ), ], ], line: 641, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 641, }, ], ], line: 642, column: 0, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 642, }, ], [ Symbol( "\"w\"", ), ], ], ), ], line: 642, }, ], ], ), ], line: 642, }, ], ], line: 642, column: 14, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 643, }, ], ], ), ], line: 642, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 643, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dofile\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4376, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 646, }, ], ], ), ], line: 646, }, ], ], line: 647, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 647, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 647, }, ], ], ), ), ], end: 4390, }, line: 648, column: 1, }, ], ], ), ], line: 644, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 649, }, ], ], ), ], line: 649, }, ], ], ), ], line: 648, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 650, }, Operator( ( "==", true, ), ), Symbol( "\"aaax\"", ), ], ], ), ], line: 649, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"string creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4415, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"alo alo\"", ), ], [ Symbol( "\"(a)\"", ), ], [ Lambda { args: [ "x", ], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 656, }, Operator( ( "..", true, ), ), Symbol( "'b'", ), ], ], ), ), ], end: 22, }, line: 656, column: 22, }, ], ], ), ], line: 656, }, ], ], line: 657, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 657, }, Operator( ( "==", true, ), ), Symbol( "'ablo ablo'", ), ], ), Ident { expr: [], line: 657, }, ], ], ), ), ], end: 4445, }, line: 658, column: 1, }, ], ], ), ], line: 650, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dump/undump\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4453, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 661, }, ], ], ), ], line: 661, }, ], ], line: 662, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 662, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 662, }, ], ], ), ], line: 662, }, ], ], line: 662, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 662, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 663, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 663, }, ], ], ), ], line: 663, }, ], ], line: 664, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 664, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 664, }, ], ], ), ), ], end: 4486, }, line: 665, column: 1, }, ], ], ), ], line: 658, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 667, }, ], ], line: 667, column: 8, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"file creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4502, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 669, }, ], [ Symbol( "'w'", ), ], ], ), ], line: 669, }, ], ], ), ], line: 669, }, ], ], line: 669, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Symbol( "\"nomenaoexistente\"", ), ], ], ), ], line: 670, }, ], ], ), ], line: 669, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 671, }, ], ], ), ], line: 670, }, Return( Some( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Symbol( "'nomenaoexistente'", ), ], ], ), ], line: 672, }, ], ], ), ), ], end: 4536, }, line: 673, column: 1, }, ], ], ), ], line: 667, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 674, }, ], ], ), ], line: 674, }, ], ], ), ], line: 673, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"table creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4553, code: [ Variable { names: [ ( "a", false, ), ( "lim", false, ), ], values: [ [ Table { data: [], line: 677, column: 7, }, ], [ Symbol( "10", ), ], ], line: 678, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 678, }, ], step: None, code: CodeBlock { start: 16, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 678, }, ], ), Symbol( "]", ), ], line: 678, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 678, }, ], ], line: 678, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 678, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 678, }, ], values: [ [ Table { data: [], line: 678, column: 16, }, ], ], line: 678, column: 16, }, ], end: 33, }, line: 678, column: 24, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 679, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 679, }, ], ], ), ], line: 679, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 679, }, ], ), Symbol( "]", ), ], line: 679, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 679, }, ], ), Ident { expr: [], line: 679, }, ], ], ), ), ], end: 4608, }, line: 680, column: 1, }, ], ], ), ], line: 674, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 682, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "close", ), ], line: 682, }, ], values: [ [ Symbol( "nil", ), ], ], line: 683, column: 3, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"closure creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4623, code: [ Function { local: false, name: [ Symbol( "close", ), ], args: [ "b", "c", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 686, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 686, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 686, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 686, }, ], ], ), ), ], end: 14, }, line: 686, column: 14, }, ], ], ), ), ], end: 22, }, line: 687, column: 1, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "close", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 688, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 688, }, ], ], ), ), ], end: 4660, }, line: 689, column: 1, }, ], ], ), ], line: 683, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"coroutines\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 4668, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 10, code: [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "yield", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"a\"", ), ], [ Symbol( "10", ), ], ], ), ], line: 693, }, ], ], ), ], line: 693, }, Return( Some( [ [ Table { data: [], line: 694, column: 3, }, ], ], ), ), ], end: 27, }, line: 695, column: 1, }, ], ], ), ], line: 692, }, ], ], line: 695, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 696, }, ], ], ), ], line: 696, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 695, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 697, }, ], ], ), ), ], end: 4714, }, line: 698, column: 1, }, ], ], ), ], line: 689, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 698, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 703, }, Operator( ( "==", true, ), ), Symbol( "\"alo//alo//uhuh//\"", ), ], ], ), ], line: 700, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 704, }, Operator( ( "==", true, ), ), Symbol( "\"//.//.uhuh.\"", ), ], ], ), ], line: 703, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 705, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 704, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"/.\"", ), ], ], ), ], line: 706, }, Operator( ( "==", true, ), ), Symbol( "\"/././.\"", ), ], ], ), ], line: 705, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\"...\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 707, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 706, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 707, }, ]