--- source: src/main.rs expression: parsed input_file: test-data/lua5.3-tests/api.lua --- [ IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 4, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 5, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 5, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 5, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\n >>> testC not active: skipping API tests <<<\\n'", ), ], ], ), ], line: 5, }, Return( None, ), ], end: 15, }, next: None, line: 7, column: 1, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 9, }, ], ], line: 11, column: 0, }, Variable { names: [ ( "pack", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), ], line: 11, }, ], ], line: 14, column: 0, }, Function { local: false, name: [ Symbol( "tcheck", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 33, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "n", ), ], line: 15, }, Operator( ( "==", true, ), ), Expr( [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "n", ), ], line: 15, }, Operator( ( "or", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t2", ), ], line: 15, }, ], ), Ident { expr: [], line: 15, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 15, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "n", ), ], line: 16, }, ], step: None, code: CodeBlock { start: 26, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 16, }, ], ), Symbol( "]", ), ], line: 16, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 16, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 16, }, ], ], ), ], line: 16, }, ], end: 41, }, line: 16, column: 24, }, ], end: 75, }, line: 17, column: 1, }, Function { local: true, name: [ Symbol( "checkerr", ), ], args: [ "msg", "f", "...", ], body: CodeBlock { start: 85, code: [ Variable { names: [ ( "stat", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 21, }, ], [ Symbol( "...", ), ], ], ), ], line: 21, }, ], ], line: 21, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "stat", ), ], line: 22, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 22, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 22, }, ], ], ), ], line: 22, }, ], ], ), ], line: 21, }, ], end: 111, }, line: 23, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing C API'", ), ], ], ), ], line: 23, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 26, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue R; return 1\"", ), ], ], ), ], line: 28, }, ], ], line: 28, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 29, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getregistry", ), Call( [], ), ], line: 29, }, ], ], ), ], line: 28, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex -1; return 1\"", ), ], ], ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 5; absindex -5; return 1\"", ), ], ], ), ], line: 34, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 33, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex 1; return 1\"", ), ], ], ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 34, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex R; return 1\"", ), ], ], ), ], line: 36, }, Operator( ( "<", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 35, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 36, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "d2s", ), Call( [ [ Symbol( "12458954321123.0", ), ], ], ), ], line: 39, }, ], ], line: 39, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 40, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Symbol( "\"d\"", ), ], [ Symbol( "12458954321123.0", ), ], ], ), ], line: 40, }, ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "s2d", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 41, }, ], ], ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "12458954321123.0", ), ], ], ), ], line: 40, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 41, }, Ident { expr: [ Symbol( "b", ), ], line: 43, }, Ident { expr: [ Symbol( "c", ), ], line: 43, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 43, }, ], ], line: 43, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 44, }, ], ], ), ], line: 43, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 44, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 46, }, ], ], line: 46, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 46, }, Ident { expr: [ Symbol( "b", ), ], line: 47, }, Ident { expr: [ Symbol( "c", ), ], line: 47, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 47, }, ], ], line: 47, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 48, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 48, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 48, }, ], ], ), ], line: 47, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 48, }, Ident { expr: [ Symbol( "b", ), ], line: 51, }, Ident { expr: [ Symbol( "c", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushbool 1; pushbool 2; pushbool 0; return 3\"", ), ], ], ), ], line: 51, }, ], ], line: 51, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 52, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 52, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 52, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 52, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 51, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 52, }, Ident { expr: [ Symbol( "b", ), ], line: 53, }, Ident { expr: [ Symbol( "c", ), ], line: 53, }, ], 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: 53, }, ], ], line: 54, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 54, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 55, }, Ident { expr: [ Symbol( "b", ), ], line: 58, }, Ident { expr: [ Symbol( "c", ), ], line: 58, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettop; return 2\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 58, }, ], ], line: 58, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "40", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 59, }, ], ], ), ], line: 58, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 59, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 5; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 61, }, ], ], ), ], line: 61, }, ], ], line: 61, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 62, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 62, column: 13, }, ], ], ), ], line: 61, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 62, }, ], 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: 64, }, ], ], ), ], line: 64, }, ], ], line: 64, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "n", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "10", ), ], ), Symbol( "]", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 64, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 65, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"remove -2; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 67, }, ], ], ), ], line: 67, }, ], ], line: 67, column: 17, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 68, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 68, column: 13, }, ], ], ), ], line: 67, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 68, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert -1; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 70, }, ], ], ), ], line: 70, }, ], ], line: 70, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 71, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 71, column: 13, }, ], ], ), ], line: 70, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 71, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert 3; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 73, }, ], ], ), ], line: 73, }, ], ], line: 73, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 74, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 74, column: 17, }, ], ], ), ], line: 73, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 74, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace 2; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 76, }, ], ], ), ], line: 76, }, ], ], line: 76, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 77, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 77, column: 15, }, ], ], ), ], line: 76, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 77, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace -2; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 79, }, ], ], ), ], line: 79, }, ], ], line: 79, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 80, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 80, column: 15, }, ], ], ), ], line: 79, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 80, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"remove 3; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 82, }, ], ], ), ], line: 82, }, ], ], line: 82, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 83, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 83, column: 15, }, ], ], ), ], line: 82, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 83, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"copy 3 4; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 85, }, ], ], ), ], line: 85, }, ], ], line: 85, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 86, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 86, column: 17, }, ], ], ), ], line: 85, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 86, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"copy -3 -1; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 88, }, ], ], ), ], line: 88, }, ], ], line: 88, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 89, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 89, column: 17, }, ], ], ), ], line: 88, }, DoBlock( CodeBlock { start: 693, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "50", ), ], ), ( None, [ Symbol( "60", ), ], ), ], line: 92, column: 16, }, ], ], line: 93, column: 0, }, ForLoop { iter: "i", start: [ Operator( ( "-", false, ), ), Symbol( "6", ), ], end: [ Symbol( "6", ), ], step: None, code: CodeBlock { start: 24, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"rotate 2 %d; return 7\"", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 94, }, ], ], ), ], line: 94, }, ], ], line: 95, column: 0, }, Variable { names: [ ( "t1", false, ), ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 95, }, ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], [ Symbol( "50", ), ], [ Symbol( "60", ), ], ], ), ], line: 95, }, ], ], ), ], line: 95, }, ], ], line: 95, column: 24, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 96, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 96, }, ], ], ), ], line: 95, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 97, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 97, }, ], ], ), ], line: 97, }, ], ], ), ], line: 96, }, ], end: 81, }, line: 98, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 98, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rotate -2 1; return *\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 100, }, ], ], ), ], line: 100, }, ], ], line: 100, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 101, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 101, column: 13, }, ], ], ), ], line: 100, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 101, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rotate -2 -1; return *\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 102, }, ], ], ), ], line: 102, }, ], ], line: 102, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 103, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 103, column: 13, }, ], ], ), ], line: 102, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 103, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rotate -1 0; return *\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 106, }, ], ], ), ], line: 106, }, ], ], line: 106, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 107, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 107, column: 13, }, ], ], ), ], line: 106, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 107, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rotate -1 1; return *\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 108, }, ], ], ), ], line: 108, }, ], ], line: 108, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 109, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 109, column: 13, }, ], ], ), ], line: 108, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 109, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rotate 5 -1; return *\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 110, }, ], ], ), ], line: 110, }, ], ], line: 110, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 111, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 111, column: 13, }, ], ], ), ], line: 110, }, ], end: 940, }, ), DoBlock( CodeBlock { start: 941, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "[[\n getglobal error\n pushstring bola\n pcall 1 1 1 # call 'error' with given handler\n pushstatus\n return 2 # return error message and status\n ]]", ), ], ], ), ], line: 116, }, ], ], line: 124, column: 0, }, Variable { names: [ ( "msg", false, ), ( "st", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Table { data: [], line: 124, column: 9, }, ], ], ), ], line: 124, }, ], ], line: 124, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "st", ), ], line: 125, }, Operator( ( "==", true, ), ), Symbol( "\"ERRERR\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 125, }, ], [ Symbol( "\"error handling\"", ), ], ], ), ], line: 125, }, ], ], ), ], line: 124, }, Variable { names: [ ( "msg", false, ), ( "st", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 126, }, ], ], line: 126, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "st", ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "\"ERRERR\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 127, }, ], [ Symbol( "\"error handling\"", ), ], ], ), ], line: 127, }, ], ], ), ], line: 126, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 129, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Lambda { args: [ "_", "x", ], body: CodeBlock { start: 73, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ":", ), Symbol( "upper", ), Call( [], ), ], line: 129, }, ], ], ), ), ], end: 80, }, line: 129, column: 24, }, ], ), ], line: 129, column: 25, }, ], ], ), ], line: 129, }, ], ], line: 130, column: 0, }, Variable { names: [ ( "msg", false, ), ( "st", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, ], ], ), ], line: 130, }, ], ], line: 130, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "st", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "\"ERRRUN\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "msg", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "\"BOLA\"", ), ], ], ), ], line: 130, }, ], end: 1043, }, ), Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 132, }, ], 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; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], [ Symbol( "10", ), ], [ Symbol( "40", ), ], [ Symbol( "90", ), ], ], ), ], line: 134, }, ], ], ), ], line: 134, }, ], ], line: 137, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 138, }, ], [ 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: 138, column: 23, }, ], ], ), ], line: 137, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 138, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 5; return *\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "\"joao\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 140, }, ], ], ), ], line: 140, }, ], ], line: 140, column: 21, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 141, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Symbol( "\"alo23joao12\"", ), ], ), ], line: 141, column: 11, }, ], ], ), ], line: 140, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 141, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"call 2,-1; return *\"", ), ], [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1141, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 145, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 145, }, ], ], ), ), ], end: 1154, }, line: 145, column: 19, }, ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"joao\"", ), ], ], ), ], line: 144, }, ], ], ), ], line: 144, }, ], ], line: 145, column: 25, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 146, }, ], [ 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: 146, column: 21, }, ], ], ), ], line: 145, }, DoBlock( CodeBlock { start: 1183, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 149, column: 5, }, ], ], line: 150, 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: 150, }, ], ), Symbol( "]", ), ], line: 150, }, ], values: [ [ Symbol( "true", ), ], ], line: 150, column: 6, }, ], end: 19, }, line: 150, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "999", ), ], ), Symbol( "]", ), ], line: 150, }, ], values: [ [ Symbol( "10", ), ], ], line: 151, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[pcall 1 -1 0; pop 1; tostring -1; return 1]]", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), ], line: 151, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 152, }, ], ], ), ], line: 151, }, ], ], line: 152, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "\"10\"", ), ], ], ), ], line: 152, }, ], end: 1231, }, ), Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 154, }, ], values: [ [ Symbol( "14", ), ], ], line: 158, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "b", ), ], line: 158, }, ], values: [ [ Symbol( "\"a31\"", ), ], ], line: 159, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[\n getglobal a;\n getglobal b;\n getglobal b;\n setglobal a;\n return *\n]]", ), ], ], ), ], line: 159, }, ], ), ], line: 165, column: 2, }, ], ], line: 165, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "14", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "\"a31\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "\"a31\"", ), ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 20; arith /; return 1\"", ), ], ], ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 20; arith -; return 1\"", ), ], ], ), ], line: 171, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum -20; arith *; return 1\"", ), ], ], ), ], line: 172, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "200", ), ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 3; arith ^; return 1\"", ), ], ], ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushstring 20; arith /; return 1\"", ), ], ], ), ], line: 174, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 173, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushnum 20; arith -; return 1\"", ), ], ], ), ], line: 175, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushstring -20; arith *; return 1\"", ), ], ], ), ], line: 176, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "200", ), ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushstring 3; arith ^; return 1\"", ), ], ], ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith /; return 1\"", ), ], [ Symbol( "2", ), ], [ Symbol( "0", ), ], ], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "10.0", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ], ), ], line: 177, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 178, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushint 3; arith \\\\; return 1\"", ), ], ], ), ], line: 179, }, ], ], line: 179, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "3.0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], ], ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "\"float\"", ), ], ], ), ], line: 179, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushint 10; pushint 3; arith \\\\; return 1\"", ), ], ], ), ], line: 181, }, ], ], line: 181, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 182, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 182, }, ], ], ), ], line: 182, }, Operator( ( "==", true, ), ), Symbol( "\"integer\"", ), ], ], ), ], line: 181, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 182, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushint 10; pushint 3; arith +; return 1\"", ), ], ], ), ], line: 183, }, ], ], ), ], line: 183, }, ], ], line: 183, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 184, }, Operator( ( "==", true, ), ), Symbol( "13", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 184, }, ], ], ), ], line: 184, }, Operator( ( "==", true, ), ), Symbol( "\"integer\"", ), ], ], ), ], line: 183, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 184, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushint 3; arith +; return 1\"", ), ], ], ), ], line: 185, }, ], ], ), ], line: 185, }, ], ], line: 185, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 186, }, Operator( ( "==", true, ), ), Symbol( "13", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 186, }, ], ], ), ], line: 186, }, Operator( ( "==", true, ), ), Symbol( "\"float\"", ), ], ], ), ], line: 185, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 186, }, Ident { expr: [ Symbol( "b", ), ], line: 187, }, Ident { expr: [ Symbol( "c", ), ], line: 187, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[pushnum 1;\n pushstring 10; arith _;\n pushstring 5; return 3]]", ), ], ], ), ], line: 187, }, ], ], line: 189, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 190, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"5\"", ), ], ], ), ], line: 189, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 190, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__add", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1525, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 191, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 191, }, ], ), ], line: 191, column: 14, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 191, }, ], ], ), ], line: 191, }, ], ], ), ), ], end: 1543, }, line: 191, column: 29, }, ], ), ( Some( [ Symbol( "__mod", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1552, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 192, }, Operator( ( "%", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 192, }, ], ), ], line: 192, column: 14, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 192, }, ], ], ), ], line: 192, }, ], ], ), ), ], end: 1570, }, line: 192, column: 26, }, ], ), ( Some( [ Symbol( "__unm", ), ], ), [ Lambda { args: [ "a", ], body: CodeBlock { start: 1577, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 193, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ), ], line: 193, column: 11, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 193, }, ], ], ), ], line: 193, }, ], ], ), ), ], end: 1592, }, line: 193, column: 21, }, ], ), ], line: 193, column: 22, }, ], ], line: 193, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, Ident { expr: [ Symbol( "b", ), ], line: 194, }, Ident { expr: [ Symbol( "c", ), ], line: 194, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 194, column: 11, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 194, }, ], ], ), ], line: 194, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "8", ), ], ), ], line: 195, column: 5, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 195, }, ], ], ), ], line: 194, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), ], line: 196, column: 6, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 196, }, ], ], ), ], line: 195, }, ], ], line: 196, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 196, }, Ident { expr: [ Symbol( "y", ), ], line: 197, }, Ident { expr: [ Symbol( "z", ), ], line: 197, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith +; return 2\"", ), ], [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 197, }, ], ], ), ], line: 197, }, ], ], line: 197, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "12", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 197, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith %; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 199, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 199, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "%", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 198, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith _; arith +; arith %; return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 200, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 200, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 200, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 200, }, Operator( ( "==", true, ), ), Symbol( "8", ), Operator( ( "%", true, ), ), Expr( [ Symbol( "4", ), Operator( ( "+", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 201, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 201, }, ], ], ), ], line: 199, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"divide by zero\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 204, }, ], [ Symbol( "\"arith \\\\\"", ), ], [ Symbol( "10", ), ], [ Symbol( "0", ), ], ], ), ], line: 201, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"%%0\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 205, }, ], [ Symbol( "\"arith %\"", ), ], [ Symbol( "10", ), ], [ Symbol( "0", ), ], ], ), ], line: 204, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 2 5, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 209, }, ], ], ), ], line: 205, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 2 5, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 210, }, ], ], ), ], line: 209, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 3 4, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 211, }, ], ], ), ], line: 210, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 3 4, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 212, }, ], ], ), ], line: 211, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 5 2, return 1\"", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 213, }, ], ], ), ], line: 212, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 2 -3, return 1\"", ), ], [ Symbol( "\"4\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"3\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], ], ), ], line: 214, }, ], ], ), ], line: 213, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT -3 2, return 1\"", ), ], [ Symbol( "\"3\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"4\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], ], ), ], line: 215, }, ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 1 4, return 1\"", ), ], ], ), ], line: 218, }, ], ], ), ], line: 215, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 9 1, return 1\"", ), ], ], ), ], line: 219, }, ], ], ), ], line: 218, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 9 9, return 1\"", ), ], ], ), ], line: 220, }, ], ], ), ], line: 219, }, Variable { names: [ ( "b", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__lt", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1933, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 222, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 222, }, ], ], ), ), ], end: 1944, }, line: 222, column: 23, }, ], ), ], line: 222, column: 24, }, ], ], line: 223, column: 0, }, Variable { names: [ ( "a1", false, ), ( "a3", false, ), ( "a4", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 223, column: 12, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 223, }, ], ], ), ], line: 223, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ], line: 224, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 224, }, ], ], ), ], line: 223, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 225, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 225, }, ], ], ), ], line: 224, }, ], ], line: 225, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 2 5, return 1\"", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 226, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 226, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 226, }, ], ], ), ], line: 225, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 2 5, return 1\"", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 227, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 227, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 227, }, ], ], ), ], line: 226, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 5 -6, return 1\"", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 228, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 228, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 228, }, ], ], ), ], line: 227, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 228, }, Ident { expr: [ Symbol( "b", ), ], line: 229, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 229, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 229, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 229, }, ], ], line: 229, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 230, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 230, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 229, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 230, }, Ident { expr: [ Symbol( "b", ), ], line: 231, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 231, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 231, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 231, }, ], ], line: 231, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 232, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 232, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 231, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 232, }, Ident { expr: [ Symbol( "b", ), ], line: 233, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 233, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 233, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 233, }, ], ], line: 233, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 234, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 234, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 233, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "20", ), ], ), ], line: 237, column: 10, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [ "t", ], body: CodeBlock { start: 2155, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 237, }, ], ], ), ), ], end: 2160, }, line: 237, column: 23, }, ], ), ], line: 237, column: 24, }, ], ], ), ], line: 237, }, ], ], line: 237, column: 25, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 237, }, Ident { expr: [ Symbol( "b", ), ], line: 238, }, Ident { expr: [ Symbol( "c", ), ], line: 238, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n len 2;\n Llen 2;\n objsize 2;\n return 3\n]]", ), ], [ Ident { expr: [ Symbol( "t", ), ], line: 243, }, ], ], ), ], line: 238, }, ], ], line: 243, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 244, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 244, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 244, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 243, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 244, }, ], values: [ [ Symbol( "\"234\"", ), ], ], line: 246, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 246, }, ], values: [ [ Symbol( "20", ), ], ], line: 246, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 246, }, Ident { expr: [ Symbol( "b", ), ], line: 247, }, Ident { expr: [ Symbol( "c", ), ], line: 247, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n len 2;\n Llen 2;\n objsize 2;\n return 3\n]]", ), ], [ Ident { expr: [ Symbol( "t", ), ], line: 252, }, ], ], ), ], line: 247, }, ], ], line: 252, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 253, }, Operator( ( "==", true, ), ), Symbol( "\"234\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 253, }, Operator( ( "==", true, ), ), Symbol( "234", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 253, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 252, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 253, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 255, }, ], ], line: 255, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 255, }, ], values: [ [ Symbol( "20", ), ], ], line: 255, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 255, }, Ident { expr: [ Symbol( "c", ), ], line: 256, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n len 2;\n objsize 2;\n return 2\n]]", ), ], [ Ident { expr: [ Symbol( "t", ), ], line: 260, }, ], ], ), ], line: 256, }, ], ], line: 260, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 261, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 261, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 260, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "\"u\"", ), ], ), ], line: 266, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "__concat", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2283, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 266, }, Operator( ( "..", true, ), ), Symbol( "'.'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 266, }, ], ], ), ), ], end: 2294, }, line: 266, column: 30, }, ], ), ], line: 266, column: 31, }, ], ], ), ], line: 266, }, ], ], line: 266, column: 32, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 266, }, Ident { expr: [ Symbol( "y", ), ], line: 267, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n pushnum 5\n pushvalue 2;\n pushvalue 2;\n concat 2;\n pushvalue -2;\n return 2;\n]]", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, ], ], ), ], line: 267, }, ], ], line: 274, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 275, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 275, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 275, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 275, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 274, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 0; return 1\"", ), ], ], ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 275, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 1; return 1\"", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 278, }, Function { local: false, name: [ Symbol( "B", ), ], args: [ "x", ], body: CodeBlock { start: 2351, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 287, }, Operator( ( "and", true, ), ), Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 2358, }, line: 287, column: 12, }, Function { local: false, name: [ Symbol( "count", ), ], args: [ "x", "n", ], body: CodeBlock { start: 2365, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 290, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 290, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 291, 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: 301, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 301, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 302, }, ], ], ), ], line: 302, }, ], ], line: 303, 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: 303, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 303, }, ], ], ), ], line: 303, }, ], ], line: 304, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 304, }, ], ], ), ], line: 304, }, Operator( ( "+", true, ), ), Expr( [ Symbol( "100", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "h", ), ], line: 304, }, ], ], ), ], line: 304, }, ], ), Ident { expr: [], line: 304, }, ], ], ), ), ], end: 2468, }, line: 305, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 307, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 305, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 308, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 307, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'32'", ), ], ], ), ], line: 309, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 308, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Table { data: [], line: 310, column: 6, }, ], ], ), ], line: 310, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 309, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 311, }, ], ], ), ], line: 311, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 310, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2521, code: [], end: 2522, }, line: 312, column: 8, }, ], ], ), ], line: 312, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 311, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 313, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 312, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 314, }, ], ], ), ], line: 314, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 313, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "15", ), ], ], ), ], line: 315, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 314, }, Function { local: false, name: [ Symbol( "to", ), ], args: [ "s", "x", "n", ], body: CodeBlock { start: 2566, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 321, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 321, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 322, 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: 322, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 322, }, ], ], ), ], line: 322, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 322, }, ], ], ), ], line: 322, }, ], ], ), ), ], end: 2590, }, line: 323, column: 1, }, Variable { names: [ ( "hfunc", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 325, }, ], ], line: 325, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getupvalue", ), Call( [ [ Ident { expr: [ Symbol( "hfunc", ), ], line: 326, }, ], [ Symbol( "1", ), ], ], ), ], line: 326, }, ], ], ), ], line: 325, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Table { data: [], line: 327, column: 8, }, ], ], ), ], line: 327, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 326, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 328, }, Operator( ( "==", true, ), ), Symbol( "\"alo\"", ), ], ], ), ], line: 327, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 329, }, Operator( ( "==", true, ), ), Symbol( "\"12\"", ), ], ], ), ], line: 328, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], [ Symbol( "3", ), ], ], ), ], line: 330, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 329, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [], line: 331, column: 8, }, ], ], ), ], line: 331, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 330, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 332, column: 13, }, ], ], ), ], line: 332, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 331, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "\"alo\\0\\0a\"", ), ], ], ), ], line: 333, }, Operator( ( "==", true, ), ), Symbol( "6", ), ], ], ), ], line: 332, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 334, }, ], ], ), ], line: 334, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 333, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "101", ), ], ], ), ], line: 335, }, ], ], ), ], line: 335, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 334, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "124", ), ], ], ), ], line: 336, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 335, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "true", ), ], ], ), ], line: 337, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 336, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Table { data: [], line: 338, column: 8, }, ], ], ), ], line: 338, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 337, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"12\"", ), ], ], ), ], line: 339, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 338, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"s2\"", ), ], ], ), ], line: 340, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 339, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "1", ), ], [ Symbol( "20", ), ], ], ), ], line: 341, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 340, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "10", ), ], ], ), ], line: 342, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 341, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "true", ), ], ], ), ], line: 343, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 342, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 344, }, ], ], ), ], line: 344, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 343, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), ], line: 345, }, ], ], ), ], line: 345, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 344, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "hfunc", ), ], line: 346, }, ], ], ), ], line: 346, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 345, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 2871, code: [], end: 2872, }, line: 347, column: 10, }, ], ], ), ], line: 347, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 346, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 348, }, ], ], ), ], line: 348, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 347, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Symbol( "20", ), ], ], ), ], line: 349, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 348, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 350, }, ], ], ), ], line: 350, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 349, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), ], line: 351, }, ], ], ), ], line: 351, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 350, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "hfunc", ), ], line: 352, }, ], ], ), ], line: 352, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 351, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 352, }, ], values: [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tocfunction\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 353, }, ], ], ), ], line: 353, }, ], ], line: 353, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 354, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 354, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 354, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 354, }, ], ], ), ], line: 353, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing panic function\"", ), ], ], ), ], line: 354, }, DoBlock( CodeBlock { start: 2975, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"pushstring hi; error\"", ), ], ], ), ], line: 360, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 360, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"pushstring hi; error;\"", ), ], [ MultilineString( "[[checkstack 5 XX\n pushstring ' alo'\n pushstring ' mundo'\n concat 3]]", ), ], ], ), ], line: 363, }, Operator( ( "==", true, ), ), Symbol( "\"hi alo mundo\"", ), ], ], ), ], line: 360, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"loadstring 4\"", ), ], ], ), ], line: 370, }, Operator( ( "==", true, ), ), Symbol( "\"bad argument #4 (string expected, got no value)\"", ), ], ], ), ], line: 367, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 375, }, Operator( ( "+", true, ), ), Symbol( "10000", ), ], ], ), ], line: 371, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"newuserdata 20000\"", ), ], ], ), ], line: 376, }, Operator( ( "==", true, ), ), Symbol( "\"not enough memory\"", ), ], ], ), ], line: 375, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 376, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 380, }, ], body: CodeBlock { start: 68, code: [ Variable { names: [ ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "[[\n pushstring \"function f() f() end\"\n loadstring -1; call 0 0\n getglobal f; call 0 0\n ]]", ), ], ], ), ], line: 381, }, ], ], line: 385, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 386, }, ], [ Symbol( "\"stack overflow\"", ), ], ], ), ], line: 386, }, ], ], ), ], line: 385, }, ], end: 87, }, next: None, line: 387, column: 1, }, ], end: 3063, }, ), IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 392, }, ], body: CodeBlock { start: 3067, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing stack overflow\"", ), ], ], ), ], line: 393, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 393, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"XXXX\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 395, }, ], [ Symbol( "\"checkstack 1000023 XXXX\"", ), ], ], ), ], line: 394, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"^stack overflow$\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 397, }, ], [ Symbol( "\"checkstack 1000023 ''\"", ), ], ], ), ], line: 395, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"pushnil;checkstack 1 XX;\"", ), ], [ Symbol( "1000000", ), ], ], ), ], line: 398, }, ], ], line: 398, column: 11, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"overflow\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 399, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 399, }, ], ], ), ], line: 398, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 399, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 400, }, ], end: 3123, }, next: None, line: 402, column: 1, }, Variable { names: [ ( "lim", false, ), ], values: [ [ Ident { expr: [ Symbol( "_soft", ), ], line: 404, }, Operator( ( "and", true, ), ), Symbol( "500", ), Operator( ( "or", true, ), ), Symbol( "12000", ), ], ], line: 405, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"checkstack \"", ), Operator( ( "..", true, ), ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 405, }, Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "100", ), ], ), Ident { expr: [], line: 405, }, Operator( ( "..", true, ), ), Symbol( "\"msg\"", ), ], ), ( None, [ Symbol( "\"newtable\"", ), ], ), ], line: 405, column: 18, }, ], ], line: 406, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 406, }, ], step: None, code: CodeBlock { start: 3156, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 407, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 407, }, ], values: [ [ Symbol( "\"pushnum \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 407, }, ], ], line: 407, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 408, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 407, }, ], values: [ [ Symbol( "\"pushnum \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 408, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], line: 408, column: 13, }, ], end: 3181, }, line: 409, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 411, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 409, }, ], values: [ [ Symbol( "\"rawgeti R 2\"", ), ], ], line: 411, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 412, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 411, }, ], values: [ [ Symbol( "\"insert \"", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 412, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 412, }, ], ], line: 414, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 414, }, ], step: None, code: CodeBlock { start: 3215, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 415, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 415, }, ], values: [ [ Symbol( "\"settable \"", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 415, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 415, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 415, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 415, }, ], ], line: 415, column: 24, }, ], end: 3240, }, line: 416, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 418, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 416, }, ], values: [ [ Symbol( "\"return 2\"", ), ], ], line: 418, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 418, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 420, }, ], [ Symbol( "\";\"", ), ], ], ), ], line: 420, }, ], ], line: 421, column: 0, }, Variable { names: [ ( "g", false, ), ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 421, }, ], ], ), ], line: 421, }, ], ], line: 421, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 422, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 422, }, ], ], ), ], line: 421, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 423, }, ], step: None, code: CodeBlock { start: 3283, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 423, }, ], ), Symbol( "]", ), ], line: 423, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 423, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 423, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 423, }, ], ), Symbol( "]", ), ], line: 423, }, ], values: [ [ Symbol( "nil", ), ], ], line: 423, column: 18, }, ], end: 3302, }, line: 423, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 424, }, ], ], ), ], line: 424, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 423, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 424, }, Ident { expr: [ Symbol( "g", ), ], line: 425, }, Ident { expr: [ Symbol( "t", ), ], line: 425, }, ], values: [ [ Symbol( "nil", ), ], ], line: 425, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 425, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n loadstring 2; pcall 0 1 0;\n pushvalue 3; insert -2; pcall 1 1 0;\n pcall 0 0 0;\n return 1\n]]", ), ], [ Symbol( "\"x=150\"", ), ], [ Lambda { args: [ "a", ], body: CodeBlock { start: 3332, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 434, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 434, }, Return( Some( [ [ Symbol( "3", ), ], ], ), ), ], end: 3342, }, line: 434, column: 18, }, ], ], ), ], line: 429, }, ], ], line: 434, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 436, }, ], ], ), ], line: 436, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 436, }, Operator( ( "==", true, ), ), Symbol( "150", ), ], ], ), ], line: 434, }, Function { local: false, name: [ Symbol( "check3", ), ], args: [ "p", "...", ], body: CodeBlock { start: 3363, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 439, column: 6, }, ], ], line: 439, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 440, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 439, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 441, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 441, }, ], ], ), ], line: 441, }, ], ], ), ], line: 440, }, ], end: 3391, }, line: 442, column: 1, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\":1:\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadstring 2; return *\"", ), ], [ Symbol( "\"x=\"", ), ], ], ), ], line: 443, }, ], ], ), ], line: 442, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"%.\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; return *\"", ), ], [ Symbol( "\".\"", ), ], ], ), ], line: 444, }, ], ], ), ], line: 443, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"xxxx\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; return *\"", ), ], [ Symbol( "\"xxxx\"", ), ], ], ), ], line: 445, }, ], ], ), ], line: 444, }, Function { local: false, name: [ Symbol( "checkerrnopro", ), ], args: [ "code", "msg", ], body: CodeBlock { start: 3437, code: [ Variable { names: [ ( "th", false, ), ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "create", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 10, code: [], end: 11, }, line: 449, column: 11, }, ], ], ), ], line: 449, }, ], ], line: 450, column: 0, }, Variable { names: [ ( "stt", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 450, }, ], [ Ident { expr: [ Symbol( "th", ), ], line: 450, }, ], [ Ident { expr: [ Symbol( "code", ), ], line: 450, }, ], ], ), ], line: 450, }, ], ], line: 450, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "stt", ), ], line: 451, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 451, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 451, }, ], ], ), ], line: 451, }, ], ], ), ], line: 450, }, ], end: 3479, }, line: 452, column: 1, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 454, }, ], body: CodeBlock { start: 3483, code: [ Ident { expr: [ Symbol( "checkerrnopro", ), Call( [ [ Symbol( "\"pushnum 3; call 0 0\"", ), ], [ Symbol( "\"attempt to call\"", ), ], ], ), ], line: 455, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing stack overflow in unprotected thread\"", ), ], ], ), ], line: 455, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 12, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 457, }, ], end: 16, }, line: 457, column: 8, }, Ident { expr: [ Symbol( "checkerrnopro", ), Call( [ [ Symbol( "\"getglobal 'f'; call 0 0;\"", ), ], [ Symbol( "\"stack overflow\"", ), ], ], ), ], line: 457, }, ], end: 3506, }, next: None, line: 459, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 459, }, DoBlock( CodeBlock { start: 3509, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 466, column: 5, }, ], ], line: 466, column: 5, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawsetp 2 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 467, }, ], [ Symbol( "20", ), ], ], ), ], line: 466, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 468, }, ], ), Symbol( "]", ), ], line: 468, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 467, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawgetp 2 1; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 469, }, ], ], ), ], line: 469, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 468, }, ], end: 3552, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 470, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ( Some( [ Symbol( "y", ), ], ), [ Symbol( "12", ), ], ), ], line: 472, column: 11, }, ], ], line: 472, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 472, }, Ident { expr: [ Symbol( "y", ), ], line: 473, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; pushvalue 4; gettable 2; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 473, }, ], [ Symbol( "3", ), ], [ Symbol( "\"y\"", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 473, }, ], ], line: 474, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 475, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 475, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 474, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 476, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "15", ), ], ], ), ], line: 475, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 477, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 476, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 478, }, ], ), Symbol( "]", ), ], line: 477, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 478, }, ], ], line: 478, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 478, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 479, }, ], ], ), ], line: 479, }, ], ], line: 479, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 480, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 480, }, ], ], ), ], line: 479, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 481, }, ], [ Symbol( "\"x\"", ), ], ], ), ], line: 480, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 482, }, ], ), Symbol( "]", ), ], line: 482, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), ], ], ), ], line: 481, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 482, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "p", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 484, }, ], ), ], line: 484, column: 9, }, ], [ Table { data: [], line: 484, column: 12, }, ], ], ), ], line: 484, }, ], ], line: 484, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 485, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 484, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 3684, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "p", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 485, }, ], ), Symbol( "]", ), ], line: 485, }, ], ], ), ), ], end: 3692, }, line: 485, column: 21, }, ], ], line: 485, column: 21, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 485, }, Ident { expr: [ Symbol( "x", ), ], line: 486, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 3, return 2\"", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 486, }, ], [ Symbol( "20", ), ], [ Symbol( "35", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 486, }, ], ], line: 486, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 487, }, Operator( ( "==", true, ), ), Symbol( "15", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 487, }, Operator( ( "==", true, ), ), Symbol( "35", ), ], ], ), ], line: 486, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 487, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"getfield 2 y, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 488, }, ], ], ), ], line: 488, }, ], ], line: 488, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 489, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 488, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 490, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 489, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 3751, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 490, }, ], ), Symbol( "]", ), ], line: 490, }, ], ], ), ), ], end: 3757, }, line: 490, column: 19, }, ], ], line: 490, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 491, }, ], ], ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 490, }, ], values: [ [ Lambda { args: [ "t", "i", "v", ], body: CodeBlock { start: 3772, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 491, }, ], ), Symbol( "]", ), ], line: 491, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 491, }, ], ], line: 491, column: 6, }, ], end: 3779, }, line: 491, column: 22, }, ], ], line: 491, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 491, }, ], 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: 492, }, ], ], ), ], line: 492, }, ], ], line: 492, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 493, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 492, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 493, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 494, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "16", ), ], ], ), ], line: 494, }, ], ], line: 494, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 495, }, Operator( ( "==", true, ), ), Symbol( "16", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 495, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 494, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 496, }, ], ), Symbol( "]", ), ], line: 495, }, ], values: [ [ Symbol( "'xuxu'", ), ], ], line: 496, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 496, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 497, }, ], ], ), ], line: 497, }, ], ], line: 497, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 498, }, Operator( ( "==", true, ), ), Symbol( "'xuxu'", ), ], ], ), ], line: 497, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 499, }, ], [ Symbol( "19", ), ], ], ), ], line: 498, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 500, }, ], ), Symbol( "]", ), ], line: 500, }, Operator( ( "==", true, ), ), Symbol( "19", ), ], ], ), ], line: 499, }, DoBlock( CodeBlock { start: 3875, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], ), [ Symbol( "32", ), ], ), ], line: 504, column: 8, }, ], ], line: 505, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n getfield 2 _012345678901234567890123456789012345678901234567890123456789\n return 1\n ]]", ), ], [ Ident { expr: [ Symbol( "t", ), ], line: 508, }, ], ], ), ], line: 505, }, ], ], line: 508, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 509, }, Operator( ( "==", true, ), ), Symbol( "32", ), ], ], ), ], line: 508, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n pushnum 33\n setglobal _012345678901234567890123456789012345678901234567890123456789\n ]]", ), ], ], ), ], line: 510, }, ], ], line: 513, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], line: 514, }, Operator( ( "==", true, ), ), Symbol( "33", ), ], ], ), ], line: 513, }, Alter { names: [ Ident { expr: [ Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], line: 514, }, ], values: [ [ Symbol( "nil", ), ], ], line: 515, column: 3, }, ], end: 3919, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 516, }, ], values: [ [ Table { data: [], line: 519, column: 4, }, ], ], line: 519, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 519, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; return *\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 520, }, ], [ Symbol( "nil", ), ], ], ), ], line: 520, }, ], ], ), ], line: 520, }, ], ], line: 520, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 521, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 521, }, ], ), ], line: 521, column: 11, }, ], ], ), ], line: 520, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 521, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "3", ), ], ), ], line: 522, column: 7, }, ], ], line: 522, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 522, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; return *\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 523, }, ], [ Symbol( "nil", ), ], ], ), ], line: 523, }, ], ], ), ], line: 523, }, ], ], line: 523, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 524, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 524, }, ], ), ( None, [ Symbol( "'a'", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 524, column: 15, }, ], ], ), ], line: 523, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 524, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; pop 1; next; return *\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 525, }, ], [ Symbol( "nil", ), ], ], ), ], line: 525, }, ], ], ), ], line: 525, }, ], ], line: 525, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 526, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 526, }, ], ), ], line: 526, column: 11, }, ], ], ), ], line: 525, }, DoBlock( CodeBlock { start: 4016, code: [ Variable { names: [ ( "A", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 533, }, ], ], line: 533, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 533, }, Ident { expr: [ Symbol( "b", ), ], line: 534, }, Ident { expr: [ Symbol( "c", ), ], line: 534, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U0; pushvalue U1; pushvalue U2; return 3]]", ), ], ], ), ], line: 534, }, ], ], line: 534, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 535, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 535, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 535, }, ], ], ), ], line: 535, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 534, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 535, }, Ident { expr: [ Symbol( "b", ), ], line: 536, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[tostring U3; tonumber U4; return 2]]", ), ], ], ), ], line: 536, }, ], ], line: 536, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 537, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 537, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 536, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushnum 100; pushnum 200; replace U2; replace U1]]", ), ], ], ), ], line: 537, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 538, }, Ident { expr: [ Symbol( "c", ), ], line: 539, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 539, }, ], ], line: 539, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 540, }, Operator( ( "==", true, ), ), Symbol( "100", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 540, }, Operator( ( "==", true, ), ), Symbol( "200", ), ], ], ), ], line: 539, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[replace U2; replace U1]]", ), ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 541, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "2", ), ], ), ], line: 541, column: 15, }, ], ], ), ], line: 540, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 541, }, Ident { expr: [ Symbol( "c", ), ], line: 542, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 542, }, ], ], line: 542, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 543, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( ".", ), Symbol( "x", ), ], line: 543, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 542, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkmemory", ), Call( [], ), ], line: 543, }, ], end: 4134, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[isnull U1; return 1]]", ), ], ], ), ], line: 549, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 545, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[isnull U100; return 1]]", ), ], ], ), ], line: 550, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 549, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[pushvalue U1; return 1]]", ), ], ], ), ], line: 551, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 550, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 553, }, ], ], line: 553, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 554, }, ], [ Symbol( "1", ), ], ], ), ], line: 554, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 555, }, ], [ Symbol( "2", ), ], ], ), ], line: 554, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 556, }, ], [ Symbol( "3", ), ], ], ), ], line: 555, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 553, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 557, }, ], [ Symbol( "2", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 556, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 558, }, ], [ Symbol( "2", ), ], ], ), ], line: 558, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 557, }, DoBlock( CodeBlock { start: 4227, code: [ Variable { names: [ ( "A", false, ), ], values: [ [ Symbol( "\"checkstack 300 msg;\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"pushnum 10;\"", ), ], [ Symbol( "255", ), ], ], ), ], line: 563, }, Operator( ( "..", true, ), ), Symbol( "\"pushcclosure 255; return 1\"", ), ], ], line: 565, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 565, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 566, }, ], ], ), ], line: 566, }, ], ], line: 567, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "255", ), ], step: None, code: CodeBlock { start: 30, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ Expr( [ Symbol( "\"pushvalue U%d; return 1\"", ), ], ), Ident { expr: [ Symbol( ":", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 568, }, ], ], ), ], line: 568, }, ], ], ), ], line: 568, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 568, }, ], end: 47, }, line: 569, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ Symbol( "\"isnull U256; return 1\"", ), ], ], ), ], line: 570, }, ], ], ), ], line: 569, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "A", ), Call( [ [ Symbol( "\"isnil U256; return 1\"", ), ], ], ), ], line: 571, }, ], ], ), ], line: 570, }, ], end: 4290, }, ), Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"got number\"", ), ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 578, }, ], [ Symbol( "3", ), ], [ Table { data: [], line: 578, column: 12, }, ], ], ), ], line: 572, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"got nil\"", ), ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 579, }, ], [ Symbol( "nil", ), ], [ Table { data: [], line: 579, column: 12, }, ], ], ), ], line: 578, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"got light userdata\"", ), ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 580, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 580, }, ], [ Table { data: [], line: 580, column: 17, }, ], ], ), ], line: 579, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 582, }, ], ], line: 582, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 583, }, ], ], ), ], line: 583, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 582, }, ForFuncLoop { iters: [ "_", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Table { data: [ ( None, [ Symbol( "true", ), ], ), ( None, [ Symbol( "false", ), ], ), ( None, [ Symbol( "4.56", ), ], ), ( None, [ Ident { expr: [ Symbol( "print", ), ], line: 584, }, ], ), ( None, [ Table { data: [], line: 584, column: 17, }, ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 584, }, ], ), ( None, [ Symbol( "\"XYZ\"", ), ], ), ], line: 584, column: 22, }, ], ], ), ], line: 584, }, ], stop: None, initial: None, code: CodeBlock { start: 4377, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 585, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 585, }, ], ], ), ], line: 585, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 585, }, ], ], ), ], line: 585, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 586, }, ], ], ), ], line: 586, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 586, }, ], ], ), ], line: 585, }, ], end: 4402, }, line: 587, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 589, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 587, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 591, }, ], [ Lambda { args: [], body: CodeBlock { start: 4422, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 4425, }, line: 591, column: 12, }, ], ], ), ], line: 589, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 591, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 593, }, ], ], ), Call( [], ), ], line: 593, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 592, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 595, }, ], [ Symbol( "134", ), ], ], ), ], line: 593, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 595, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 597, }, ], ], ), ], line: 597, }, Operator( ( "==", true, ), ), Symbol( "134", ), ], ], ), ], line: 596, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"atomic\"", ), ], ], ), ], line: 597, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gccolor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 601, }, ], ], ), ], line: 601, }, Operator( ( "==", true, ), ), Symbol( "\"black\"", ), ], ], ), ], line: 600, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 602, }, ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "100", ), ], ), ], line: 602, column: 11, }, ], ], ), ], line: 601, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"pause\"", ), ], ], ), ], line: 602, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 604, }, ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 604, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 603, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 4519, code: [ Variable { names: [ ( "bb", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 608, }, ], ], line: 608, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "bb", ), ], line: 609, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 609, }, ], ], ), ], line: 608, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 609, }, ], values: [ [ Ident { expr: [ Symbol( "bb", ), ], line: 610, }, ], ], line: 610, column: 3, }, ], end: 4540, }, line: 611, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 611, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 4550, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 614, }, ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 614, }, ], ], ), ], line: 614, }, ], ], line: 614, column: 8, }, ], end: 4559, }, line: 615, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 616, }, ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 616, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 615, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 616, }, ], values: [ [ Symbol( "nil", ), ], ], line: 623, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 623, column: 8, }, ], ], ), ], line: 623, }, ], ], line: 623, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 624, }, ], ], ), ], line: 623, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 625, column: 7, }, ], ], ), ], line: 625, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 625, }, ], ], ), ], line: 624, }, Alter { names: [ Ident { expr: [ Symbol( "Arr", ), ], line: 625, }, ], values: [ [ Table { data: [], line: 627, column: 4, }, ], ], line: 627, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Lim", ), ], line: 627, }, ], values: [ [ Symbol( "100", ), ], ], line: 629, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 629, }, ], step: None, code: CodeBlock { start: 4613, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 630, }, ], ), Symbol( "]", ), ], line: 630, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 630, column: 11, }, ], ], ), ], line: 630, }, ], ], line: 630, column: 12, }, ], end: 4626, }, line: 631, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 633, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 633, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 631, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 633, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 634, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 636, }, ], step: None, code: CodeBlock { start: 4670, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 637, }, ], ), Symbol( "]", ), ], line: 637, }, ], ], ), ], line: 637, }, ], end: 4680, }, line: 638, column: 1, }, Function { local: false, name: [ Symbol( "printlocks", ), ], args: [], body: CodeBlock { start: 4684, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "\"gettable R; return 1\"", ), ], ], ), ], line: 641, }, ], ], line: 642, column: 0, }, Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"n\"", ), ], ], ), ], line: 642, }, ], ], line: 642, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 643, }, ], ], ), ], line: 642, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 644, }, ], step: None, code: CodeBlock { start: 29, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 645, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 645, }, ], ], ), ], line: 645, }, ], ], ), ], line: 645, }, ], end: 39, }, line: 646, column: 1, }, ], end: 4724, }, line: 647, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 650, }, ], step: None, code: CodeBlock { start: 4731, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 651, }, ], ), Symbol( "]", ), ], line: 651, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 651, column: 11, }, ], ], ), ], line: 651, }, ], ], line: 651, column: 12, }, ], end: 4744, }, line: 652, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 654, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 4753, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 655, }, ], ), Symbol( "]", ), ], line: 655, }, ], ], ), ], line: 655, }, ], end: 4763, }, line: 656, 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: 658, }, ], ], ), ], line: 658, }, ], ], ), ], line: 658, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 656, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 661, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 658, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 661, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 664, column: 8, }, ], ], ), ], line: 664, }, ], ], line: 664, column: 9, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 664, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 668, }, ], ], ), ], line: 668, }, ], ], ), ], line: 668, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 666, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 668, }, ], values: [ [ Table { data: [], line: 672, column: 4, }, ], ], line: 672, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 672, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "0", ), ], ), ], line: 673, column: 7, }, ], ], line: 673, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 673, }, ], values: [ [ Symbol( "nil", ), ], ], line: 674, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 674, }, ], values: [ [ Symbol( "nil", ), ], ], line: 675, column: 0, }, Variable { names: [ ( "F", false, ), ], values: [], line: 675, column: 2, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 675, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 4844, code: [ Variable { names: [ ( "udval", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 677, }, ], ], ), ], line: 677, }, ], ], line: 677, column: 9, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 678, }, ], [ Ident { expr: [ Symbol( "udval", ), ], line: 678, }, ], ], ), ], line: 677, }, Variable { names: [ ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 679, }, ], ], line: 679, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 679, }, ], values: [ [ Symbol( "nil", ), ], ], line: 680, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 681, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 681, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 681, }, ], ], ), ], line: 680, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"table.insert({}, {})\"", ), ], ], ), ], line: 682, }, ], ], ), Call( [], ), ], line: 681, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 682, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 684, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 684, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 684, }, ], ], ), ], line: 683, }, Variable { names: [ ( "dummy", false, ), ], values: [ [ Table { data: [], line: 685, column: 5, }, ], ], line: 686, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 686, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 77, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 687, }, ], ], ), ], line: 687, }, Operator( ( "==", true, ), ), Symbol( "\"userdata\"", ), ], ], ), ], line: 687, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 688, }, ], ], ), ], line: 688, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "B", ), ], line: 688, }, ], ], ), ], line: 687, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 689, }, ], ], ), ], line: 688, }, ], end: 104, }, next: None, line: 690, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 690, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 691, }, ], ], line: 691, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 691, }, ], values: [ [ Ident { expr: [ Symbol( "udval", ), ], line: 692, }, ], ], line: 693, column: 0, }, Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 4961, }, line: 694, column: 1, }, ], ], line: 694, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "__gc", ), ], line: 694, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), ], line: 695, }, ], ], line: 698, column: 0, }, DoBlock( CodeBlock { start: 4967, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 699, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 699, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 701, }, ], ], line: 701, column: 8, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "5001", ), ], ], ), ], line: 702, }, ], ], line: 702, 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: 703, }, ], ], ), ], line: 703, }, Operator( ( "==", true, ), ), Symbol( "5001", ), ], ], ), ], line: 702, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 704, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 704, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], ], ), ], line: 703, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 704, }, ], values: [ [ Symbol( "nil", ), ], ], line: 705, column: 3, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 705, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 707, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 707, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 706, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 707, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 709, }, ], ], line: 709, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 709, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 84, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 711, }, ], end: 91, }, line: 711, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 712, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 712, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 711, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 712, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 714, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 714, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 713, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 714, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 716, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 717, }, ], ], line: 717, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 717, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 718, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 137, code: [], end: 138, }, line: 719, column: 9, }, ], ), ], line: 719, column: 10, }, ], ], line: 720, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 146, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 720, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 720, }, ], ], ), ], line: 720, }, ], end: 160, }, line: 720, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 721, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 721, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 720, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 721, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 723, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 723, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 722, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 723, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 725, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 725, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 724, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 725, }, ], end: 5171, }, ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 727, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 730, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 733, }, ], ], line: 733, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 733, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 733, }, ], ], ), ], line: 733, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 733, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 733, }, ], ], ), ], line: 733, }, ], ], line: 733, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 733, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 734, }, ], ], line: 734, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 734, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 734, }, ], ], ), ], line: 734, }, Alter { names: [ Ident { expr: [ Symbol( "nb", ), ], line: 734, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 734, }, ], ], ), ], line: 734, }, ], ], line: 734, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 734, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 735, }, ], ], line: 735, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 735, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 735, }, ], ], ), ], line: 735, }, Alter { names: [ Ident { expr: [ Symbol( "nc", ), ], line: 735, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 735, }, ], ], ), ], line: 735, }, ], ], line: 735, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 735, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 738, }, ], ], line: 738, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 738, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 739, }, ], ], line: 739, column: 8, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"FILE%* expected, got userdata\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), ], line: 741, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 741, }, ], ], ), ], line: 739, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"FILE%* expected, got userdata\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), ], line: 742, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 742, }, ], ], ), ], line: 741, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 744, }, ], ], ), ], line: 744, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 744, }, ], ], ), ], line: 744, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 742, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 744, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 746, }, ], ], ), ], line: 746, }, ], ], line: 746, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "e", ), ], line: 746, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 747, }, ], ], ), ], line: 747, }, ], ], line: 747, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 747, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 748, }, ], ], ), ], line: 748, }, ], ], line: 748, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 748, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 749, }, ], ], ), ], line: 749, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 749, }, ], ], ), ], line: 749, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 749, }, ], ], ), ], line: 749, }, ], ), ], line: 749, column: 24, }, ], ], line: 749, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 750, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 750, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 750, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 750, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 750, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 750, }, ], ], ), ], line: 749, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 750, }, ], values: [ [ Symbol( "nil", ), ], ], line: 752, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 752, }, ], values: [ [ Symbol( "nil", ), ], ], line: 752, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 752, }, ], values: [ [ Symbol( "nil", ), ], ], line: 752, column: 12, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 753, }, ], ], ), ], line: 752, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 753, }, ], ], ), ], line: 753, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 753, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 758, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 758, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nc", ), ], line: 758, }, ], ], ), ], line: 755, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 758, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 760, }, ], ], ), ], line: 760, }, ], ], line: 760, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 761, }, ], ], ), ], line: 761, }, Operator( ( "==", true, ), ), Symbol( "'userdata'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 761, }, ], ], ), ], line: 761, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tt", ), ], line: 761, }, ], ], ), ], line: 760, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 761, }, ], values: [ [ Symbol( "nil", ), ], ], line: 762, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "b", ), ], line: 762, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 763, }, ], ], line: 763, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 763, }, ], values: [ [ Symbol( "nil", ), ], ], line: 764, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 764, }, ], values: [ [ Symbol( "nil", ), ], ], line: 765, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 765, }, ], values: [ [ Symbol( "nil", ), ], ], line: 766, column: 3, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 767, }, ], ], ), ], line: 766, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 767, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 768, }, ], ], line: 768, column: 8, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 769, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 769, }, ], ), ], line: 769, column: 11, }, ], ], ), ], line: 768, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 769, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 770, }, ], ], ), ], line: 770, }, ], ], line: 770, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 770, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 772, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 771, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 774, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n5", ), ], line: 774, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 774, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nb", ), ], line: 774, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 774, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), ], line: 774, }, ], ], ), ], line: 772, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 774, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 776, }, Ident { expr: [ Symbol( "na", ), ], line: 779, }, ], values: [ [ Table { data: [], line: 779, column: 6, }, ], [ Table { data: [], line: 779, column: 9, }, ], ], line: 780, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "30", ), ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 5557, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 781, }, ], ), Symbol( "]", ), ], line: 781, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 781, }, ], ], line: 781, column: 11, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 782, }, ], ), Symbol( "]", ), ], line: 782, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 782, }, ], ), ], line: 782, column: 14, }, ], ], ), ], line: 781, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 783, }, ], ), Symbol( "]", ), ], line: 782, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 783, }, ], ), Symbol( "]", ), ], line: 783, }, ], ], ), ], line: 783, }, ], ], line: 783, column: 14, }, ], end: 5598, }, line: 784, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 784, }, ], values: [ [ Table { data: [], line: 785, column: 4, }, ], ], line: 785, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 785, }, ], values: [ [ Symbol( "nil", ), ], ], line: 786, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 786, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 787, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 786, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "30", ), ], step: None, code: CodeBlock { start: 5623, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 788, }, ], ), Symbol( "]", ), ], line: 788, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 788, }, ], ), Symbol( "]", ), ], line: 788, }, ], ], ), ], line: 788, }, ], end: 5636, }, line: 788, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 788, }, ], values: [ [ Symbol( "nil", ), ], ], line: 792, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 792, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 5648, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 793, }, ], ), Symbol( "]", ), ], line: 793, }, ], ], ), ], line: 793, }, ], end: 5658, }, line: 794, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 794, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "41", ), ], ], ), ], line: 796, }, ], ], line: 796, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 796, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 796, }, ], ), ], line: 796, column: 20, }, ], ], ), ], line: 796, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"objsize 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 797, }, ], ], ), ], line: 797, }, Operator( ( "==", true, ), ), Symbol( "41", ), ], ], ), ], line: 796, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 797, }, ], values: [ [ Table { data: [], line: 798, column: 4, }, ], ], line: 798, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 798, }, ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "x", ), ], line: 799, }, ], ), [ Symbol( "1", ), ], ), ], line: 799, column: 9, }, ], ], line: 799, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 799, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 800, }, ], ], ), ], line: 800, }, ], ], line: 800, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 800, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 803, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 801, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 804, }, ], ], ), ], line: 804, }, ], stop: None, initial: None, code: CodeBlock { start: 5731, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 804, }, ], ), Symbol( "]", ), ], line: 804, }, ], values: [ [ Symbol( "nil", ), ], ], line: 804, column: 6, }, ], end: 5738, }, line: 804, column: 15, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 804, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 806, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 806, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 806, }, ], ], ), ], line: 805, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 4; return 1\"", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 809, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 809, }, ], [ Symbol( "20", ), ], ], ), ], line: 809, }, ], ], ), ], line: 806, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 3 2; return 1\"", ), ], [ Symbol( "'alo'", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 810, }, ], ], ), ], line: 809, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 811, }, ], ], ), ], line: 810, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], [ Table { data: [], line: 812, column: 11, }, ], [ Table { data: [], line: 812, column: 14, }, ], ], ), ], line: 812, }, ], ], ), ], line: 811, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], ], ), ], line: 813, }, ], ], ), ], line: 812, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 814, }, ], ], ), ], line: 813, }, DoBlock( CodeBlock { start: 5837, code: [ Variable { names: [ ( "map", false, ), ], values: [ [ Table { data: [], line: 818, column: 5, }, ], ], line: 819, 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: 819, }, ], ), Symbol( "]", ), ], line: 819, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 819, }, ], ), Symbol( "]", ), ], line: 819, }, ], ], ), ), ], end: 28, }, line: 819, column: 23, }, ], ), ], line: 819, column: 24, }, ], ], line: 820, 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: 821, }, ], ], line: 821, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 822, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 822, }, ], ], ), ], line: 821, }, Alter { names: [ Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "u", ), ], line: 823, }, ], ), Symbol( "]", ), ], line: 822, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 823, }, ], ], line: 824, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "u", ), ], line: 824, }, ], ], ), ), ], end: 61, }, line: 825, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 826, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 826, }, ], ], ), ], line: 825, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 827, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "11", ), ], ], ), ], line: 827, }, ], ], ), ], line: 826, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 828, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 828, }, ], ], ), ], line: 828, }, ], ], ), ], line: 827, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 829, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 829, }, ], ], ), ], line: 829, }, ], ], ), ], line: 828, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 829, }, ], values: [ [ Symbol( "nil", ), ], ], line: 830, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 831, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 831, }, ], ], ), ], line: 830, }, ], end: 5979, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 832, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "t", ), ], line: 834, }, ], values: [ [ Table { data: [], line: 839, column: 6, }, ], ], line: 839, column: 6, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "sethook", ), Call( [ [ MultilineString( "[[\n # set a line hook after 3 count hooks\n sethook 4 0 '\n getglobal t;\n pushvalue -3; append -2\n pushvalue -2; append -2\n ']]", ), ], [ Symbol( "\"c\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 839, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 847, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 847, }, ], values: [ [ Symbol( "1", ), ], ], line: 848, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 848, }, ], values: [ [ Symbol( "1", ), ], ], line: 849, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 849, }, ], values: [ [ Symbol( "1", ), ], ], line: 850, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 850, }, ], values: [ [ Symbol( "1", ), ], ], line: 851, column: 3, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "sethook", ), Call( [], ), ], line: 851, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 852, }, ], values: [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "t", ), ], line: 853, }, ], ], line: 853, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 854, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), ], ], ), ], line: 853, }, Alter { names: [ Ident { expr: [ Symbol( "line", ), ], line: 854, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 855, }, ], ], line: 855, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 856, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 856, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "line", ), ], line: 856, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 855, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 857, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "6", ), ], ), Symbol( "]", ), ], line: 857, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "line", ), ], line: 857, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ], ), ], line: 856, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "7", ), ], ), Symbol( "]", ), ], line: 858, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 857, }, DoBlock( CodeBlock { start: 6084, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 863, column: 5, }, ], ], line: 864, 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: 865, }, ], ), Symbol( "]", ), ], line: 865, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 865, }, ], ], ), ], line: 865, }, ], ], line: 865, column: 11, }, ], end: 24, }, line: 866, 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: 868, }, ], ), Symbol( "]", ), ], line: 868, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"error inside gc\"", ), ], ], ), ], line: 868, }, ], end: 21, }, line: 868, column: 21, }, ], ), ], line: 868, column: 22, }, ], ], ), ], line: 868, }, ], end: 57, }, line: 869, 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: 871, }, ], ), Symbol( "]", ), ], line: 871, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"A=A+1\"", ), ], ], ), Call( [], ), ], line: 871, }, ], end: 23, }, line: 871, column: 23, }, ], ), ], line: 871, column: 24, }, ], ], ), ], line: 871, }, ], end: 92, }, line: 872, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "A", ), ], line: 872, }, ], values: [ [ Symbol( "0", ), ], ], line: 873, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 873, }, ], values: [ [ Symbol( "0", ), ], ], line: 875, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 103, code: [ Variable { names: [ ( "stat", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 876, }, ], ], ), ], line: 876, }, ], ], line: 877, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "stat", ), ], line: 877, }, ], body: CodeBlock { start: 12, code: [ Break, ], end: 14, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 880, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 880, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 880, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 881, }, ], [ Symbol( "\"__gc\"", ), ], ], ), ], line: 881, }, ], ], ), ], line: 880, }, ], end: 31, }, next: None, line: 882, column: 1, }, ), line: 882, column: 1, }, ], end: 135, }, line: 883, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 884, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 883, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 886, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 884, }, ], end: 6232, }, ), DoBlock( CodeBlock { start: 6233, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 891, column: 5, }, ], ], line: 891, column: 6, }, Variable { names: [ ( "lim", false, ), ], values: [ [ Symbol( "30", ), ], ], line: 892, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 892, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 892, }, ], ), Symbol( "]", ), ], line: 892, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 892, }, ], ], ), ], line: 892, }, ], ], line: 892, column: 11, }, ], end: 29, }, line: 892, column: 19, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 893, }, ], 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: 893, }, ], ), Symbol( "]", ), ], line: 893, }, ], ], ), ], line: 893, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 893, }, ], ], ), ], line: 893, }, ], end: 51, }, line: 893, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 894, }, ], 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: 894, }, ], ], ), ], line: 894, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 894, }, ], ), Symbol( "]", ), ], line: 894, }, ], ], ), ], line: 894, }, ], end: 73, }, line: 894, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 895, }, ], 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: 895, }, ], ), Symbol( "]", ), ], line: 895, }, ], ), Symbol( "]", ), ], line: 895, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 895, }, ], ], line: 895, column: 9, }, ], end: 90, }, line: 895, column: 17, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 896, }, ], 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: 896, }, ], ], ), ], line: 896, }, ], ), Symbol( "]", ), ], line: 896, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 896, }, ], ], line: 896, column: 11, }, ], end: 109, }, line: 896, 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: 897, }, ], ], ), ], line: 897, }, ], ], ), ], line: 897, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 896, }, ], end: 6358, }, ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 903, }, ], ], ), ], line: 898, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 903, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 904, }, ], ], line: 904, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 905, }, ], ], ), ], line: 904, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 907, }, ], [ Symbol( "\"X='a'; return 'a'\"", ), ], ], ), ], line: 907, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 905, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 910, }, ], [ Symbol( "\"function f () return 'alo', 3 end; f()\"", ), ], ], ), ], line: 910, }, ], ], ), ], line: 910, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 907, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 910, }, Ident { expr: [ Symbol( "b", ), ], line: 912, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 912, }, ], [ Symbol( "\"return f()\"", ), ], ], ), ], line: 912, }, ], ], line: 912, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 913, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 913, }, Operator( ( "==", true, ), ), Symbol( "'3'", ), ], ], ), ], line: 912, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 915, }, ], [ Symbol( "\"_ERRORMESSAGE = nil\"", ), ], ], ), ], line: 913, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 915, }, Ident { expr: [ Symbol( "_", ), ], line: 917, }, Ident { expr: [ Symbol( "b", ), ], line: 917, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 917, }, ], [ Symbol( "\"return sin(1)\"", ), ], ], ), ], line: 917, }, ], ], line: 917, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 918, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 918, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 917, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 918, }, Ident { expr: [ Symbol( "b", ), ], line: 921, }, Ident { expr: [ Symbol( "c", ), ], line: 921, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 921, }, ], [ Symbol( "\"return a+\"", ), ], ], ), ], line: 921, }, ], ], line: 921, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 922, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 922, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 922, }, ], ], ), ], line: 922, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 921, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 924, }, ], ], ), ], line: 922, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 924, }, Ident { expr: [ Symbol( "b", ), ], line: 925, }, Ident { expr: [ Symbol( "c", ), ], line: 925, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 925, }, ], [ MultilineString( "[[\n string = require'string'\n a = require'_G'; assert(a == _G and require(\"_G\") == a)\n io = require'io'; assert(type(io.read) == \"function\")\n assert(require(\"io\") == io)\n a = require'table'; assert(type(a.insert) == \"function\")\n a = require'debug'; assert(type(a.getlocal) == \"function\")\n a = require'math'; assert(type(a.sin) == \"function\")\n return string.sub('okinama', 1, 2)\n]]", ), ], ], ), ], line: 925, }, ], ], line: 934, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 935, }, Operator( ( "==", true, ), ), Symbol( "\"ok\"", ), ], ], ), ], line: 934, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 937, }, ], ], ), ], line: 935, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 937, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 940, }, ], ], line: 940, column: 7, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 941, }, ], ], ), ], line: 940, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 942, }, ], [ Symbol( "\"a = {}\"", ), ], ], ), ], line: 941, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 943, }, ], [ MultilineString( "[[getglobal \"a\"; pushstring \"x\"; pushint 1;\n settable -3]]", ), ], ], ), ], line: 942, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 945, }, ], [ Symbol( "\"return a.x\"", ), ], ], ), ], line: 945, }, Operator( ( "==", true, ), ), Symbol( "\"1\"", ), ], ], ), ], line: 944, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 947, }, ], ], ), ], line: 945, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 947, }, ], values: [ [ Symbol( "nil", ), ], ], line: 949, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 949, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"block too big\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), ], line: 956, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 956, }, ], ], ), ], line: 951, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 956, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 958, }, Operator( ( "+", true, ), ), Symbol( "5000", ), ], ], ), ], line: 957, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"not enough memory\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"local a={}; for i=1,100000 do a[i]=i end\"", ), ], ], ), ], line: 959, }, ], ], ), ], line: 958, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 959, }, Function { local: false, name: [ Symbol( "testamem", ), ], args: [ "s", "f", ], body: CodeBlock { start: 6630, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 966, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 966, }, Variable { names: [ ( "M", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 967, }, ], ], line: 968, column: 0, }, Variable { names: [ ( "oldM", false, ), ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 968, }, ], ], line: 969, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], ], line: 970, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "M", ), ], line: 971, }, ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 971, }, Operator( ( "+", true, ), ), Symbol( "7", ), ], ], line: 971, column: 5, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "M", ), ], line: 972, }, ], ], ), ], line: 971, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 972, }, Ident { expr: [ Symbol( "b", ), ], line: 973, }, ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 973, }, ], ], ), ], line: 973, }, ], ], line: 973, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 973, }, IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 975, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 975, }, ], body: CodeBlock { start: 30, code: [ Break, ], end: 32, }, next: None, line: 975, column: 7, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 975, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 977, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 978, }, ], [ Symbol( "\"memory\"", ), ], ], ), ], line: 978, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 978, }, ], [ Symbol( "\"overflow\"", ), ], ], ), ], line: 978, }, ], ), Ident { expr: [], line: 978, }, ], body: CodeBlock { start: 60, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 979, }, ], [ Symbol( "0", ), ], ], ), ], line: 979, }, ], end: 67, }, next: None, line: 980, column: 1, }, ], end: 96, }, line: 981, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\nlimit for \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 982, }, Operator( ( "..", true, ), ), Symbol( "\": \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "M", ), ], line: 982, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "oldM", ), ], line: 982, }, ], ], ), ], line: 981, }, Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 983, }, ], ], ), ), ], end: 6741, }, line: 984, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 984, }, ], values: [ [ Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"state creation\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), ], line: 989, }, ], ], ), ], line: 989, }, ], ], line: 989, column: 10, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 990, }, ], ], ), ], line: 989, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 990, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawgeti R 1; return 1\"", ), ], ], ), ], line: 996, }, ], ], line: 996, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "mt", ), ], line: 997, }, ], ], ), ], line: 997, }, Operator( ( "==", true, ), ), Symbol( "\"thread\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "running", ), Call( [], ), ], line: 997, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 997, }, ], ], ), ], line: 996, }, Function { local: false, name: [ Symbol( "expand", ), ], args: [ "n", "s", ], body: CodeBlock { start: 6790, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 1002, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "\"\"", ), ], ], ), ), ], end: 8, }, next: None, line: 1002, column: 8, }, Variable { names: [ ( "e", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"=\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 1003, }, ], ], ), ], line: 1003, }, ], ], line: 1004, 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: 1004, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 1005, }, ], [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 1005, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 1005, }, ], ], ), ], line: 1005, }, ], [ Ident { expr: [ Symbol( "e", ), ], line: 1005, }, ], ], ), ], line: 1004, }, ], ], ), ), ], end: 6832, }, line: 1006, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "G", ), ], line: 1006, }, ], values: [ [ Symbol( "0", ), ], ], line: 1008, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1008, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1008, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 1008, }, ], ], line: 1008, column: 14, }, Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Symbol( "20", ), ], [ Symbol( "\"G=G+1\"", ), ], ], ), ], line: 1009, }, ], ], ), Call( [], ), ], line: 1008, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "G", ), ], line: 1010, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 1009, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1010, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"thread creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6875, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doonnewstack", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 1013, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 6885, }, line: 1014, column: 1, }, ], ], ), ], line: 1010, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"loadstring\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6893, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 1020, }, ], ], ), ), ], end: 6899, }, line: 1021, column: 1, }, ], ], ), ], line: 1014, }, Variable { names: [ ( "testprog", false, ), ], values: [ [ MultilineString( "[[\nlocal function foo () return end\nlocal t = {\"x\"}\na = \"aaa\"\nfor i = 1, #t do a=a..t[i] end\nreturn true\n]]", ), ], ], line: 1030, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 1030, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1034, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 1034, }, ], ], line: 1035, 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: 1035, }, ], [ Symbol( "\"w\"", ), ], ], ), ], line: 1035, }, ], ], ), ], line: 1035, }, ], ], line: 1035, column: 14, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 1036, }, ], ], ), ], line: 1035, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 1036, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dofile\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6949, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1039, }, ], ], ), ], line: 1039, }, ], ], line: 1040, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1040, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1040, }, ], ], ), ), ], end: 6963, }, line: 1041, column: 1, }, ], ], ), ], line: 1037, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1042, }, ], ], ), ], line: 1042, }, ], ], ), ], line: 1041, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 1043, }, Operator( ( "==", true, ), ), Symbol( "\"aaax\"", ), ], ], ), ], line: 1042, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"string creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6988, 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: 1049, }, Operator( ( "..", true, ), ), Symbol( "'b'", ), ], ], ), ), ], end: 22, }, line: 1049, column: 22, }, ], ], ), ], line: 1049, }, ], ], line: 1050, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 1050, }, Operator( ( "==", true, ), ), Symbol( "'ablo ablo'", ), ], ), Ident { expr: [], line: 1050, }, ], ], ), ), ], end: 7018, }, line: 1051, column: 1, }, ], ], ), ], line: 1043, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dump/undump\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7026, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 1054, }, ], ], ), ], line: 1054, }, ], ], line: 1055, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 1055, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1055, }, ], ], ), ], line: 1055, }, ], ], line: 1055, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1055, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 1056, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1056, }, ], ], ), ], line: 1056, }, ], ], line: 1057, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1057, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1057, }, ], ], ), ), ], end: 7059, }, line: 1058, column: 1, }, ], ], ), ], line: 1051, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 1060, }, ], ], line: 1060, column: 8, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"file creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7075, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1062, }, ], [ Symbol( "'w'", ), ], ], ), ], line: 1062, }, ], ], ), ], line: 1062, }, ], ], line: 1062, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Symbol( "\"nomenaoexistente\"", ), ], ], ), ], line: 1063, }, ], ], ), ], line: 1062, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 1064, }, ], ], ), ], line: 1063, }, Return( Some( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Symbol( "'nomenaoexistente'", ), ], ], ), ], line: 1065, }, ], ], ), ), ], end: 7109, }, line: 1066, column: 1, }, ], ], ), ], line: 1060, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1067, }, ], ], ), ], line: 1067, }, ], ], ), ], line: 1066, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"table creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7126, code: [ Variable { names: [ ( "a", false, ), ( "lim", false, ), ], values: [ [ Table { data: [], line: 1070, column: 7, }, ], [ Symbol( "10", ), ], ], line: 1071, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1071, }, ], step: None, code: CodeBlock { start: 16, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1071, }, ], ), Symbol( "]", ), ], line: 1071, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 1071, }, ], ], line: 1071, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1071, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 1071, }, ], values: [ [ Table { data: [], line: 1071, column: 16, }, ], ], line: 1071, column: 16, }, ], end: 33, }, line: 1071, column: 24, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 1072, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 1072, }, ], ], ), ], line: 1072, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 1072, }, ], ), Symbol( "]", ), ], line: 1072, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 1072, }, ], ), Ident { expr: [], line: 1072, }, ], ], ), ), ], end: 7181, }, line: 1073, column: 1, }, ], ], ), ], line: 1067, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"constructors\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7189, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "50", ), ], ), ( Some( [ Symbol( "a", ), ], ), [ Symbol( "1", ), ], ), ( Some( [ Symbol( "b", ), ], ), [ Symbol( "2", ), ], ), ( Some( [ Symbol( "c", ), ], ), [ Symbol( "3", ), ], ), ( Some( [ Symbol( "d", ), ], ), [ Symbol( "4", ), ], ), ( Some( [ Symbol( "e", ), ], ), [ Symbol( "5", ), ], ), ], line: 1076, column: 34, }, ], ], line: 1077, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1077, }, ], ], ), ], line: 1077, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "e", ), ], line: 1077, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ), Ident { expr: [], line: 1077, }, ], ], ), ), ], end: 7239, }, line: 1078, column: 1, }, ], ], ), ], line: 1073, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 1080, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "close", ), ], line: 1080, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1081, column: 3, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"closure creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7254, 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: 1084, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1084, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 1084, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 1084, }, ], ], ), ), ], end: 14, }, line: 1084, column: 14, }, ], ], ), ), ], end: 22, }, line: 1085, column: 1, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "close", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 1086, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 1086, }, ], ], ), ), ], end: 7291, }, line: 1087, column: 1, }, ], ], ), ], line: 1081, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"coroutines\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7299, 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: 1091, }, ], ], ), ], line: 1091, }, Return( Some( [ [ Table { data: [], line: 1092, column: 3, }, ], ], ), ), ], end: 27, }, line: 1093, column: 1, }, ], ], ), ], line: 1090, }, ], ], line: 1093, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1094, }, ], ], ), ], line: 1094, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 1093, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1095, }, ], ], ), ), ], end: 7345, }, line: 1096, column: 1, }, ], ], ), ], line: 1087, }, DoBlock( CodeBlock { start: 7347, code: [ Variable { names: [ ( "lim", false, ), ], values: [ [ Symbol( "100", ), ], ], line: 1100, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 1100, column: 5, }, ], ], line: 1100, column: 6, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1100, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1100, }, ], ), Symbol( "]", ), ], line: 1100, }, ], values: [ [ Symbol( "\"01234567890123456789\"", ), ], ], line: 1100, column: 6, }, ], end: 24, }, line: 1100, column: 20, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"auxiliary buffer\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 31, code: [ Return( Some( [ [ Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1102, }, ], [ Symbol( "\",\"", ), ], ], ), ], line: 1102, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 1102, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 1102, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 1102, }, ], ], ), ), ], end: 52, }, line: 1103, column: 1, }, ], ], ), ], line: 1100, }, ], end: 7401, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 1104, }, Function { local: true, name: [ Symbol( "gsub", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 7413, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1110, }, Ident { expr: [ Symbol( "b", ), ], line: 1110, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gsub 2 3 4; gettop; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 1110, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 1110, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 1110, }, ], ], ), ], line: 1110, }, ], ], line: 1110, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1111, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 1110, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1112, }, ], ], ), ), ], end: 7438, }, line: 1113, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 1115, }, Operator( ( "==", true, ), ), Symbol( "\"alo//alo//uhuh//\"", ), ], ], ), ], line: 1113, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 1116, }, Operator( ( "==", true, ), ), Symbol( "\"//.//.uhuh.\"", ), ], ], ), ], line: 1115, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 1117, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 1116, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"/.\"", ), ], ], ), ], line: 1118, }, Operator( ( "==", true, ), ), Symbol( "\"/././.\"", ), ], ], ), ], line: 1117, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\"...\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 1119, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 1118, }, Variable { names: [ ( "mt_xuxu", false, ), ( "res", false, ), ( "top", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu; gettop; return 3\"", ), ], ], ), ], line: 1123, }, ], ], line: 1123, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1124, }, ], ], ), ], line: 1124, }, Operator( ( "==", true, ), ), Symbol( "\"table\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 1124, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1124, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1123, }, Variable { names: [ ( "d", false, ), ( "res", false, ), ( "top", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu; gettop; return 3\"", ), ], ], ), ], line: 1125, }, ], ], line: 1125, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1126, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1126, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 1126, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1126, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1125, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 1126, }, Ident { expr: [ Symbol( "res", ), ], line: 1127, }, Ident { expr: [ Symbol( "top", ), ], line: 1127, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu1; gettop; return 3\"", ), ], ], ), ], line: 1127, }, ], ], line: 1127, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1128, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1128, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 1128, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1128, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1127, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 1128, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1130, }, ], ], line: 1130, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 1130, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1131, }, ], ], line: 1131, column: 9, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring xuxu; gettable R; setmetatable 2\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 1132, }, ], ], ), ], line: 1131, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 1133, }, ], ], ), ], line: 1133, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1133, }, ], ], ), ], line: 1132, }, Variable { names: [ ( "res1", false, ), ( "res2", false, ), ( "top", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[testudata -1 xuxu\n \t \t\t\t testudata 2 xuxu\n\t\t\t\t gettop\n\t\t\t\t return 3]]", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 1140, }, ], ], ), ], line: 1137, }, ], ], line: 1140, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res1", ), ], line: 1141, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1141, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1141, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1140, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 1141, }, Ident { expr: [ Symbol( "res2", ), ], line: 1144, }, Ident { expr: [ Symbol( "top", ), ], line: 1144, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[testudata -1 xuxu1\n\t\t\t testudata 2 xuxu1\n\t\t\t gettop\n\t\t\t return 3]]", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 1147, }, ], ], ), ], line: 1144, }, ], ], line: 1147, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 1148, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1148, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1148, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1147, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 1148, }, Ident { expr: [ Symbol( "res2", ), ], line: 1151, }, Ident { expr: [ Symbol( "top", ), ], line: 1151, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[testudata -1 xuxu2\n\t\t\t testudata 2 xuxu2\n\t\t\t gettop\n\t\t\t return 3]]", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 1154, }, ], ], ), ], line: 1151, }, ], ], line: 1154, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 1155, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1155, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1155, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1154, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 1155, }, Ident { expr: [ Symbol( "res2", ), ], line: 1158, }, Ident { expr: [ Symbol( "top", ), ], line: 1158, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[testudata -1 xuxu\n\t\t\t testudata 2 xuxu\n\t\t\t gettop\n\t\t\t return 3]]", ), ], [ Ident { expr: [ Symbol( "y", ), ], line: 1161, }, ], ], ), ], line: 1158, }, ], ], line: 1161, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 1162, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1162, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1162, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1161, }, DoBlock( CodeBlock { start: 7720, code: [ Variable { names: [ ( "r", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getregistry", ), Call( [], ), ], line: 1166, }, ], ], line: 1166, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 1167, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1167, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu1", ), ], line: 1167, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1167, }, ], ], ), ], line: 1166, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 1167, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1168, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu1", ), ], line: 1168, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1168, column: 11, }, ], end: 7754, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 1169, }, ]