--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-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: 15, column: 0, }, Variable { names: [ ( "MEMERRMSG", false, ), ], values: [ [ Symbol( "\"not enough memory\"", ), ], ], line: 17, column: 0, }, Function { local: false, name: [ Symbol( "tcheck", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 37, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "n", ), ], line: 18, }, Operator( ( "==", true, ), ), Expr( [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "n", ), ], line: 18, }, Operator( ( "or", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t2", ), ], line: 18, }, ], ), Ident { expr: [], line: 18, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 18, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "n", ), ], line: 19, }, ], step: None, code: CodeBlock { start: 26, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 19, }, ], ), Symbol( "]", ), ], line: 19, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 19, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 19, }, ], ], ), ], line: 19, }, ], end: 41, }, line: 19, column: 24, }, ], end: 79, }, line: 20, column: 1, }, Function { local: true, name: [ Symbol( "checkerr", ), ], args: [ "msg", "f", "...", ], body: CodeBlock { start: 89, code: [ Variable { names: [ ( "stat", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 24, }, ], [ Symbol( "...", ), ], ], ), ], line: 24, }, ], ], line: 24, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "stat", ), ], line: 25, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 25, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 25, }, ], ], ), ], line: 25, }, ], ], ), ], line: 24, }, ], end: 115, }, line: 26, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing C API'", ), ], ], ), ], line: 26, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 29, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue R; return 1\"", ), ], ], ), ], line: 31, }, ], ], line: 31, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getregistry", ), Call( [], ), ], line: 32, }, ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex -1; return 1\"", ), ], ], ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 32, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 5; absindex -5; return 1\"", ), ], ], ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex 1; return 1\"", ), ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex R; return 1\"", ), ], ], ), ], line: 39, }, Operator( ( "<", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 38, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 39, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "d2s", ), Call( [ [ Symbol( "12458954321123.0", ), ], ], ), ], line: 42, }, ], ], line: 42, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 43, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Symbol( "\"d\"", ), ], [ Symbol( "12458954321123.0", ), ], ], ), ], line: 43, }, ], ], ), ], line: 42, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "s2d", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 44, }, ], ], ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "12458954321123.0", ), ], ], ), ], line: 43, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 44, }, Ident { expr: [ Symbol( "b", ), ], line: 46, }, Ident { expr: [ Symbol( "c", ), ], line: 46, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 46, }, ], ], line: 46, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 47, }, ], ], ), ], line: 46, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 47, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 49, }, ], ], line: 49, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 49, }, Ident { expr: [ Symbol( "b", ), ], line: 50, }, Ident { expr: [ Symbol( "c", ), ], line: 50, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 50, }, ], ], line: 50, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 51, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 51, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 51, }, ], ], ), ], line: 50, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 51, }, Ident { expr: [ Symbol( "b", ), ], line: 54, }, Ident { expr: [ Symbol( "c", ), ], line: 54, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushbool 1; pushbool 2; pushbool 0; return 3\"", ), ], ], ), ], line: 54, }, ], ], line: 54, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 55, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 55, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], 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: 56, }, Ident { expr: [ Symbol( "c", ), ], line: 56, }, ], 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: 56, }, ], ], line: 57, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 57, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 58, }, Ident { expr: [ Symbol( "b", ), ], line: 61, }, Ident { expr: [ Symbol( "c", ), ], line: 61, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettop; return 2\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 61, }, ], ], line: 61, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "40", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 62, }, ], ], ), ], 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 5; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 64, }, ], ], ), ], line: 64, }, ], ], line: 64, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 65, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 65, column: 13, }, ], ], ), ], 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( "\"settop 0; settop 15; return 10\"", ), ], [ Symbol( "3", ), ], [ Symbol( "1", ), ], [ Symbol( "23", ), ], ], ), ], line: 67, }, ], ], ), ], line: 67, }, ], ], line: 67, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "n", ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "10", ), ], ), Symbol( "]", ), ], line: 68, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], 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( "\"remove -2; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 70, }, ], ], ), ], line: 70, }, ], ], line: 70, column: 17, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 71, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ], 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 -1; return *\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 73, }, ], ], ), ], line: 73, }, ], ], line: 73, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 74, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 74, column: 13, }, ], ], ), ], 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( "\"insert 3; 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( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 77, column: 17, }, ], ], ), ], 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( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], 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( "\"replace -2; 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( "3", ), ], ), ( 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( "\"remove 3; 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( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 86, column: 15, }, ], ], ), ], 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 4; 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( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 89, column: 17, }, ], ], ), ], line: 88, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 89, }, ], 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: 91, }, ], ], ), ], line: 91, }, ], ], line: 91, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 92, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 92, column: 17, }, ], ], ), ], line: 91, }, DoBlock( CodeBlock { start: 697, 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: 95, column: 16, }, ], ], line: 96, 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: 97, }, ], ], ), ], line: 97, }, ], ], line: 98, 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: 98, }, ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], [ Symbol( "50", ), ], [ Symbol( "60", ), ], ], ), ], line: 98, }, ], ], ), ], line: 98, }, ], ], line: 98, column: 24, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 99, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 99, }, ], ], ), ], line: 98, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 100, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 100, }, ], ], ), ], line: 100, }, ], ], ), ], line: 99, }, ], end: 81, }, line: 101, column: 1, }, 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: 103, }, ], ], ), ], line: 103, }, ], ], line: 103, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 104, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 104, column: 13, }, ], ], ), ], line: 103, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 104, }, ], 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: 105, }, ], ], ), ], line: 105, }, ], ], line: 105, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 106, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "40", ), ], ), ( None, [ Symbol( "30", ), ], ), ], line: 106, column: 13, }, ], ], ), ], line: 105, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 106, }, ], 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: 109, }, ], ], ), ], line: 109, }, ], ], line: 109, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 110, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 110, column: 13, }, ], ], ), ], line: 109, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 110, }, ], 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: 111, }, ], ], ), ], line: 111, }, ], ], line: 111, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 112, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 112, column: 13, }, ], ], ), ], line: 111, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 112, }, ], 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: 113, }, ], ], ), ], line: 113, }, ], ], line: 113, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 114, }, ], [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 114, column: 13, }, ], ], ), ], line: 113, }, ], end: 944, }, ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n warningC \"#This shold be a\"\n warningC \" single \"\n warning \"warning\"\n warningC \"#This should be \"\n warning \"another one\"\n]]", ), ], ], ), ], line: 115, }, DoBlock( CodeBlock { start: 951, 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: 130, }, ], ], line: 138, column: 0, }, Variable { names: [ ( "msg", false, ), ( "st", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "upper", ), ], line: 138, }, ], ], ), ], line: 138, }, ], ], line: 138, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "st", ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "\"ERRRUN\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "msg", ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "\"BOLA\"", ), ], ], ), ], line: 138, }, Variable { names: [ ( "msg", false, ), ( "st", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), ], line: 140, }, ], ], ), ], line: 140, }, ], ], line: 140, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "st", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "\"ERRRUN\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "msg", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 140, }, ], end: 1001, }, ), Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 143, }, ], 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: 145, }, ], ], ), ], line: 145, }, ], ], line: 148, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 149, }, ], [ 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: 149, column: 23, }, ], ], ), ], line: 148, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 149, }, ], 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: 151, }, ], ], ), ], line: 151, }, ], ], line: 151, column: 21, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 152, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Symbol( "\"alo23joao12\"", ), ], ), ], line: 152, column: 11, }, ], ], ), ], line: 151, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 152, }, ], 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: 1099, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 156, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 156, }, ], ], ), ), ], end: 1112, }, line: 156, column: 19, }, ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"joao\"", ), ], ], ), ], line: 155, }, ], ], ), ], line: 155, }, ], ], line: 156, column: 25, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 157, }, ], [ 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: 157, column: 21, }, ], ], ), ], line: 156, }, DoBlock( CodeBlock { start: 1141, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 160, column: 5, }, ], ], line: 161, 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: 161, }, ], ), Symbol( "]", ), ], line: 161, }, ], values: [ [ Symbol( "true", ), ], ], line: 161, column: 6, }, ], end: 19, }, line: 161, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "999", ), ], ), Symbol( "]", ), ], line: 161, }, ], values: [ [ Symbol( "10", ), ], ], line: 162, 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: 162, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 163, }, ], ], ), ], line: 162, }, ], ], line: 163, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 164, }, Operator( ( "==", true, ), ), Symbol( "\"10\"", ), ], ], ), ], line: 163, }, ], end: 1189, }, ), Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 165, }, ], values: [ [ Symbol( "14", ), ], ], line: 169, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "b", ), ], line: 169, }, ], values: [ [ Symbol( "\"a31\"", ), ], ], line: 170, 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: 170, }, ], ), ], line: 176, column: 2, }, ], ], line: 176, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "14", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "\"a31\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "\"a31\"", ), ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 20; arith /; return 1\"", ), ], ], ), ], line: 181, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 20; arith -; return 1\"", ), ], ], ), ], line: 182, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum -20; arith *; return 1\"", ), ], ], ), ], line: 183, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "200", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 3; arith ^; return 1\"", ), ], ], ), ], line: 184, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushstring 20; arith /; return 1\"", ), ], ], ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushnum 20; arith -; return 1\"", ), ], ], ), ], line: 186, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushstring -20; arith *; return 1\"", ), ], ], ), ], line: 187, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "200", ), ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushstring 3; arith ^; return 1\"", ), ], ], ), ], line: 188, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith /; return 1\"", ), ], [ Symbol( "2", ), ], [ Symbol( "0", ), ], ], ), ], line: 189, }, Operator( ( "==", true, ), ), Symbol( "10.0", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ], ), ], line: 188, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 189, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushint 3; arith \\\\; return 1\"", ), ], ], ), ], line: 190, }, ], ], line: 190, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 191, }, Operator( ( "==", true, ), ), Symbol( "3.0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 191, }, ], ], ), ], line: 191, }, Operator( ( "==", true, ), ), Symbol( "\"float\"", ), ], ], ), ], line: 190, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 191, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushint 10; pushint 3; arith \\\\; return 1\"", ), ], ], ), ], line: 192, }, ], ], line: 192, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, ], ], ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "\"integer\"", ), ], ], ), ], line: 192, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 193, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushint 10; pushint 3; arith +; return 1\"", ), ], ], ), ], line: 194, }, ], ], ), ], line: 194, }, ], ], line: 194, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "13", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 195, }, ], ], ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "\"integer\"", ), ], ], ), ], line: 194, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 195, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushint 3; arith +; return 1\"", ), ], ], ), ], line: 196, }, ], ], ), ], line: 196, }, ], ], line: 196, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "13", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, ], ], ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "\"float\"", ), ], ], ), ], line: 196, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, Ident { expr: [ Symbol( "b", ), ], line: 198, }, Ident { expr: [ Symbol( "c", ), ], line: 198, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[pushnum 1;\n pushstring 10; arith _;\n pushstring 5; return 3]]", ), ], ], ), ], line: 198, }, ], ], line: 200, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 201, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "\"5\"", ), ], ], ), ], line: 200, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 201, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__add", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1483, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 202, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 202, }, ], ), ], line: 202, column: 14, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 202, }, ], ], ), ], line: 202, }, ], ], ), ), ], end: 1501, }, line: 202, column: 29, }, ], ), ( Some( [ Symbol( "__mod", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1510, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 203, }, Operator( ( "%", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 203, }, ], ), ], line: 203, column: 14, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 203, }, ], ], ), ], line: 203, }, ], ], ), ), ], end: 1528, }, line: 203, column: 26, }, ], ), ( Some( [ Symbol( "__unm", ), ], ), [ Lambda { args: [ "a", ], body: CodeBlock { start: 1535, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 204, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ), ], line: 204, column: 11, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 204, }, ], ], ), ], line: 204, }, ], ], ), ), ], end: 1550, }, line: 204, column: 21, }, ], ), ], line: 204, column: 22, }, ], ], line: 204, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 204, }, Ident { expr: [ Symbol( "b", ), ], line: 205, }, Ident { expr: [ Symbol( "c", ), ], line: 205, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 205, column: 11, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 205, }, ], ], ), ], line: 205, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "8", ), ], ), ], line: 206, column: 5, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 206, }, ], ], ), ], line: 205, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), ], line: 207, column: 6, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 207, }, ], ], ), ], line: 206, }, ], ], line: 207, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 207, }, Ident { expr: [ Symbol( "y", ), ], line: 208, }, Ident { expr: [ Symbol( "z", ), ], line: 208, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith +; return 2\"", ), ], [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 208, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 208, }, ], ], ), ], line: 208, }, ], ], line: 208, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "12", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 208, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith %; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 210, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 210, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 210, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "%", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 209, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith _; arith +; arith %; return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 211, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 211, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 211, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "8", ), Operator( ( "%", true, ), ), Expr( [ Symbol( "4", ), Operator( ( "+", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 212, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 212, }, ], ], ), ], line: 210, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"divide by zero\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 215, }, ], [ Symbol( "\"arith \\\\\"", ), ], [ Symbol( "10", ), ], [ Symbol( "0", ), ], ], ), ], line: 212, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"%%0\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 216, }, ], [ Symbol( "\"arith %\"", ), ], [ Symbol( "10", ), ], [ Symbol( "0", ), ], ], ), ], line: 215, }, 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: 220, }, ], ], ), ], line: 216, }, 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: 221, }, ], ], ), ], line: 220, }, 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: 222, }, ], ], ), ], line: 221, }, 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: 223, }, ], ], ), ], line: 222, }, 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: 224, }, ], ], ), ], line: 223, }, 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: 225, }, ], ], ), ], line: 224, }, 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: 226, }, ], ], ), ], line: 225, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 1 4, return 1\"", ), ], ], ), ], line: 229, }, ], ], ), ], line: 226, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 9 1, return 1\"", ), ], ], ), ], line: 230, }, ], ], ), ], line: 229, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 9 9, return 1\"", ), ], ], ), ], line: 231, }, ], ], ), ], line: 230, }, Variable { names: [ ( "b", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__lt", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1891, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 233, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 233, }, ], ], ), ), ], end: 1902, }, line: 233, column: 23, }, ], ), ], line: 233, column: 24, }, ], ], line: 234, column: 0, }, Variable { names: [ ( "a1", false, ), ( "a3", false, ), ( "a4", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 234, column: 12, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 234, }, ], ], ), ], line: 234, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ], line: 235, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 235, }, ], ], ), ], line: 234, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 236, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 236, }, ], ], ), ], line: 235, }, ], ], line: 236, 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: 237, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 237, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 237, }, ], ], ), ], line: 236, }, 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: 238, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 238, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 238, }, ], ], ), ], line: 237, }, 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: 239, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 239, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 239, }, ], ], ), ], line: 238, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 239, }, Ident { expr: [ Symbol( "b", ), ], line: 240, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 240, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 240, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 240, }, ], ], line: 240, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 241, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 241, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 240, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 241, }, Ident { expr: [ Symbol( "b", ), ], line: 242, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 242, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 242, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 242, }, ], ], line: 242, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 243, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 243, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 242, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 243, }, Ident { expr: [ Symbol( "b", ), ], line: 244, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 5 -6, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 244, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 244, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 244, }, ], ], line: 244, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 245, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 245, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 244, }, DoBlock( CodeBlock { start: 2096, code: [ Variable { names: [ ( "mt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__lt", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 249, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 249, }, ], ], ), ), ], end: 23, }, line: 249, column: 23, }, ], ), ( Some( [ Symbol( "__le", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 32, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 250, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 250, }, ], ], ), ), ], end: 43, }, line: 250, column: 19, }, ], ), ( Some( [ Symbol( "__eq", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 52, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 251, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 251, }, ], ], ), ), ], end: 63, }, line: 251, column: 19, }, ], ), ], line: 251, column: 20, }, ], ], line: 252, column: 0, }, Function { local: true, name: [ Symbol( "O", ), ], args: [ "x", ], body: CodeBlock { start: 70, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "x", ), ], line: 253, }, ], ), ], line: 253, column: 6, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 253, }, ], ], ), ], line: 253, }, ], ], ), ), ], end: 80, }, line: 254, column: 1, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LT 2 3; pushint 10; return 2\"", ), ], [ Ident { expr: [ Symbol( "O", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 256, }, ], [ Ident { expr: [ Symbol( "O", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 256, }, ], ], ), ], line: 256, }, ], ], line: 256, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 257, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 257, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 256, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare LE 2 3; pushint 10; return 2\"", ), ], [ Ident { expr: [ Symbol( "O", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 258, }, ], [ Ident { expr: [ Symbol( "O", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 258, }, ], ], ), ], line: 258, }, ], ], line: 258, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 259, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 259, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 258, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; pushint 10; return 2\"", ), ], [ Ident { expr: [ Symbol( "O", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 260, }, ], [ Ident { expr: [ Symbol( "O", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 260, }, ], ], ), ], line: 260, }, ], ], line: 260, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 261, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 260, }, ], end: 2270, }, ), Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "20", ), ], ), ], line: 265, column: 10, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [ "t", ], body: CodeBlock { start: 2288, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 265, }, ], ], ), ), ], end: 2293, }, line: 265, column: 23, }, ], ), ], line: 265, column: 24, }, ], ], ), ], line: 265, }, ], ], line: 265, column: 25, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 265, }, Ident { expr: [ Symbol( "b", ), ], line: 266, }, Ident { expr: [ Symbol( "c", ), ], line: 266, }, ], 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: 271, }, ], ], ), ], line: 266, }, ], ], line: 271, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 271, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 272, }, ], values: [ [ Symbol( "\"234\"", ), ], ], line: 274, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 274, }, ], values: [ [ Symbol( "20", ), ], ], line: 274, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, Ident { expr: [ Symbol( "b", ), ], line: 275, }, Ident { expr: [ Symbol( "c", ), ], line: 275, }, ], 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: 280, }, ], ], ), ], line: 275, }, ], ], line: 280, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "\"234\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "234", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 280, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 281, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 283, }, ], ], line: 283, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 283, }, ], values: [ [ Symbol( "20", ), ], ], line: 283, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 283, }, Ident { expr: [ Symbol( "c", ), ], line: 284, }, ], 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: 288, }, ], ], ), ], line: 284, }, ], ], line: 288, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 289, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 289, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 289, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 288, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 289, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "\"u\"", ), ], ), ], line: 294, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "__concat", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2416, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 294, }, Operator( ( "..", true, ), ), Symbol( "'.'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 294, }, ], ], ), ), ], end: 2427, }, line: 294, column: 30, }, ], ), ], line: 294, column: 31, }, ], ], ), ], line: 294, }, ], ], line: 294, column: 32, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 294, }, Ident { expr: [ Symbol( "y", ), ], line: 295, }, ], 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: 302, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 302, }, ], ], ), ], line: 295, }, ], ], line: 302, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 303, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 303, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 303, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 303, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 302, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 0; return 1\"", ), ], ], ), ], line: 306, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 303, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 1; return 1\"", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 309, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 306, }, Function { local: false, name: [ Symbol( "B", ), ], args: [ "x", ], body: CodeBlock { start: 2484, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 315, }, Operator( ( "and", true, ), ), Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 2491, }, line: 315, column: 12, }, Function { local: false, name: [ Symbol( "count", ), ], args: [ "x", "n", ], body: CodeBlock { start: 2498, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 318, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 318, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 319, 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: 329, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 329, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 330, }, ], ], ), ], line: 330, }, ], ], line: 331, 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: 331, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 331, }, ], ], ), ], line: 331, }, ], ], line: 332, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 332, }, ], ], ), ], line: 332, }, Operator( ( "+", true, ), ), Expr( [ Symbol( "100", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "h", ), ], line: 332, }, ], ], ), ], line: 332, }, ], ), Ident { expr: [], line: 332, }, ], ], ), ), ], end: 2601, }, line: 333, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 335, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 333, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 336, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 335, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'32'", ), ], ], ), ], line: 337, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 336, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Table { data: [], line: 338, column: 6, }, ], ], ), ], line: 338, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 337, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 339, }, ], ], ), ], line: 339, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 338, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 2654, code: [], end: 2655, }, line: 340, column: 8, }, ], ], ), ], line: 340, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 339, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 341, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 340, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 342, }, ], ], ), ], line: 342, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 341, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "15", ), ], ], ), ], line: 343, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 342, }, Function { local: false, name: [ Symbol( "to", ), ], args: [ "s", "x", "n", ], body: CodeBlock { start: 2699, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 349, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 349, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 350, 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: 350, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 350, }, ], ], ), ], line: 350, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 350, }, ], ], ), ], line: 350, }, ], ], ), ), ], end: 2723, }, line: 351, column: 1, }, Variable { names: [ ( "null", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 353, }, ], ], line: 354, column: 0, }, Variable { names: [ ( "hfunc", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 354, }, ], ], line: 354, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getupvalue", ), Call( [ [ Ident { expr: [ Symbol( "hfunc", ), ], line: 355, }, ], [ Symbol( "1", ), ], ], ), ], line: 355, }, ], ], ), ], line: 354, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Table { data: [], line: 356, column: 8, }, ], ], ), ], line: 356, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 355, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 357, }, Operator( ( "==", true, ), ), Symbol( "\"alo\"", ), ], ], ), ], line: 356, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 358, }, Operator( ( "==", true, ), ), Symbol( "\"12\"", ), ], ], ), ], line: 357, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], [ Symbol( "3", ), ], ], ), ], line: 359, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 358, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [], line: 360, column: 8, }, ], ], ), ], line: 360, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 359, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 361, column: 13, }, ], ], ), ], line: 361, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 360, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "\"alo\\0\\0a\"", ), ], ], ), ], line: 362, }, Operator( ( "==", true, ), ), Symbol( "6", ), ], ], ), ], line: 361, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 363, }, ], ], ), ], line: 363, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 362, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "101", ), ], ], ), ], line: 364, }, ], ], ), ], line: 364, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 363, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "124", ), ], ], ), ], line: 365, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 364, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "true", ), ], ], ), ], line: 366, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 365, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Table { data: [], line: 367, column: 8, }, ], ], ), ], line: 367, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 366, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"12\"", ), ], ], ), ], line: 368, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 367, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"s2\"", ), ], ], ), ], line: 369, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 368, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "1", ), ], [ Symbol( "20", ), ], ], ), ], line: 370, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 369, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "10", ), ], ], ), ], line: 371, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 371, }, ], ], ), ], line: 370, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "true", ), ], ], ), ], line: 372, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 372, }, ], ], ), ], line: 371, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "nil", ), ], ], ), ], line: 373, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 373, }, ], ], ), ], line: 372, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "\"abc\"", ), ], ], ), ], line: 374, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 374, }, ], ], ), ], line: 373, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"x\"", ), ], [ Symbol( "10", ), ], ], ), ], line: 375, }, ], ], ), ], line: 375, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"x\"", ), ], [ Symbol( "10", ), ], ], ), ], line: 376, }, ], ], ), ], line: 375, }, ], ], ), ], line: 374, }, DoBlock( CodeBlock { start: 3017, code: [ Variable { names: [ ( "s1", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"x\"", ), ], [ Symbol( "300", ), ], ], ), ], line: 378, }, ], ], line: 379, column: 0, }, Variable { names: [ ( "s2", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"x\"", ), ], [ Symbol( "300", ), ], ], ), ], line: 379, }, ], ], line: 379, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "s1", ), ], line: 380, }, ], ], ), ], line: 380, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "s2", ), ], line: 380, }, ], ], ), ], line: 380, }, ], ], ), ], line: 379, }, ], end: 3056, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 382, }, ], ], ), ], line: 382, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 382, }, ], ], ), ], line: 381, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), ], line: 383, }, ], ], ), ], line: 383, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 383, }, ], ], ), ], line: 382, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "hfunc", ), ], line: 384, }, ], ], ), ], line: 384, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 384, }, ], ], ), ], line: 383, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 3105, code: [], end: 3106, }, line: 385, column: 10, }, ], ], ), ], line: 385, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 385, }, ], ], ), ], line: 384, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 386, }, ], ], ), ], line: 386, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "null", ), ], line: 386, }, ], ], ), ], line: 385, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Symbol( "20", ), ], ], ), ], line: 387, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 386, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 388, }, ], ], ), ], line: 388, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 387, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), ], line: 389, }, ], ], ), ], line: 389, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 388, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "hfunc", ), ], line: 390, }, ], ], ), ], line: 390, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 389, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 390, }, ], values: [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tocfunction\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 391, }, ], ], ), ], line: 391, }, ], ], line: 391, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 392, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 392, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 392, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 392, }, ], ], ), ], line: 391, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing panic function\"", ), ], ], ), ], line: 392, }, DoBlock( CodeBlock { start: 3209, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"pushstring hi; error\"", ), ], ], ), ], line: 398, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 398, }, 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: 401, }, Operator( ( "==", true, ), ), Symbol( "\"hi alo mundo\"", ), ], ], ), ], line: 398, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"loadstring 4\"", ), ], ], ), ], line: 408, }, Operator( ( "==", true, ), ), Symbol( "\"bad argument #4 (string expected, got no value)\"", ), ], ], ), ], line: 405, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 413, }, Operator( ( "+", true, ), ), Symbol( "10000", ), ], ], ), ], line: 409, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ Symbol( "\"newuserdata 20000\"", ), ], ], ), ], line: 414, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "MEMERRMSG", ), ], line: 414, }, ], ], ), ], line: 413, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 414, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 418, }, ], 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: 419, }, ], ], line: 423, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 424, }, ], [ Symbol( "\"stack overflow\"", ), ], ], ), ], line: 424, }, ], ], ), ], line: 423, }, ], end: 87, }, next: None, line: 425, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkpanic", ), Call( [ [ MultilineString( "[[\n pushstring \"return {__close = function () Y = 'ho'; end}\"\n newtable\n loadstring -2\n call 0 1\n setmetatable -2\n toclose -1\n pushstring \"hi\"\n error\n ]]", ), ], [ MultilineString( "[[\n getglobal Y\n concat 2 # concat original error with global Y\n ]]", ), ], ], ), ], line: 428, }, Operator( ( "==", true, ), ), Symbol( "\"hiho\"", ), ], ], ), ], line: 425, }, ], end: 3310, }, ), IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 447, }, ], body: CodeBlock { start: 3314, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing stack overflow\"", ), ], ], ), ], line: 448, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 448, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"XXXX\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 450, }, ], [ Symbol( "\"checkstack 1000023 XXXX\"", ), ], ], ), ], line: 449, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"^stack overflow$\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 452, }, ], [ Symbol( "\"checkstack 1000023 ''\"", ), ], ], ), ], line: 450, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"pushnil;checkstack 1 XX;\"", ), ], [ Symbol( "1000000", ), ], ], ), ], line: 453, }, ], ], line: 453, column: 11, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"overflow\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 454, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 454, }, ], ], ), ], line: 453, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 454, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 455, }, ], end: 3370, }, next: None, line: 457, column: 1, }, Variable { names: [ ( "lim", false, ), ], values: [ [ Ident { expr: [ Symbol( "_soft", ), ], line: 459, }, Operator( ( "and", true, ), ), Symbol( "500", ), Operator( ( "or", true, ), ), Symbol( "12000", ), ], ], line: 460, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"checkstack \"", ), Operator( ( "..", true, ), ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 460, }, Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "100", ), ], ), Ident { expr: [], line: 460, }, Operator( ( "..", true, ), ), Symbol( "\"msg\"", ), ], ), ( None, [ Symbol( "\"newtable\"", ), ], ), ], line: 460, column: 18, }, ], ], line: 461, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 461, }, ], step: None, code: CodeBlock { start: 3403, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 462, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 462, }, ], values: [ [ Symbol( "\"pushnum \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 462, }, ], ], line: 462, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 463, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 462, }, ], values: [ [ Symbol( "\"pushnum \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 463, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], line: 463, column: 13, }, ], end: 3428, }, line: 464, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 466, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 464, }, ], values: [ [ Symbol( "\"rawgeti R 2\"", ), ], ], line: 466, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 467, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 466, }, ], values: [ [ Symbol( "\"insert \"", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 467, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 467, }, ], ], line: 469, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 469, }, ], step: None, code: CodeBlock { start: 3462, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 470, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 470, }, ], values: [ [ Symbol( "\"settable \"", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 470, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 470, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 470, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 470, }, ], ], line: 470, column: 24, }, ], end: 3487, }, line: 471, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 473, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 471, }, ], values: [ [ Symbol( "\"return 2\"", ), ], ], line: 473, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 473, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 475, }, ], [ Symbol( "\";\"", ), ], ], ), ], line: 475, }, ], ], line: 476, column: 0, }, Variable { names: [ ( "g", false, ), ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 476, }, ], ], ), ], line: 476, }, ], ], line: 476, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 477, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 477, }, ], ], ), ], line: 476, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 478, }, ], step: None, code: CodeBlock { start: 3530, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 478, }, ], ), Symbol( "]", ), ], line: 478, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 478, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 478, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 478, }, ], ), Symbol( "]", ), ], line: 478, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 478, }, ], ], line: 478, column: 18, }, ], end: 3549, }, line: 478, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 479, }, ], ], ), ], line: 479, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 478, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 479, }, Ident { expr: [ Symbol( "g", ), ], line: 480, }, Ident { expr: [ Symbol( "t", ), ], line: 480, }, ], values: [ [ Symbol( "nil", ), ], ], line: 480, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 480, }, ], 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: 3579, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 489, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 489, }, Return( Some( [ [ Symbol( "3", ), ], ], ), ), ], end: 3589, }, line: 489, column: 18, }, ], ], ), ], line: 484, }, ], ], line: 489, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 491, }, ], ], ), ], line: 491, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 491, }, Operator( ( "==", true, ), ), Symbol( "150", ), ], ], ), ], line: 489, }, Function { local: false, name: [ Symbol( "check3", ), ], args: [ "p", "...", ], body: CodeBlock { start: 3610, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 494, column: 6, }, ], ], line: 494, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 495, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 494, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 496, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 496, }, ], ], ), ], line: 496, }, ], ], ), ], line: 495, }, ], end: 3638, }, line: 497, column: 1, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\":1:\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadstring 2; return *\"", ), ], [ Symbol( "\"x=\"", ), ], ], ), ], line: 498, }, ], ], ), ], line: 497, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"%.\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; return *\"", ), ], [ Symbol( "\".\"", ), ], ], ), ], line: 499, }, ], ], ), ], line: 498, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"xxxx\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; return *\"", ), ], [ Symbol( "\"xxxx\"", ), ], ], ), ], line: 500, }, ], ], ), ], line: 499, }, Function { local: false, name: [ Symbol( "checkerrnopro", ), ], args: [ "code", "msg", ], body: CodeBlock { start: 3684, code: [ Variable { names: [ ( "th", false, ), ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "create", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 10, code: [], end: 11, }, line: 504, column: 11, }, ], ], ), ], line: 504, }, ], ], line: 505, column: 0, }, Variable { names: [ ( "stt", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 505, }, ], [ Ident { expr: [ Symbol( "th", ), ], line: 505, }, ], [ Ident { expr: [ Symbol( "code", ), ], line: 505, }, ], ], ), ], line: 505, }, ], ], line: 505, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "stt", ), ], line: 506, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 506, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 506, }, ], ], ), ], line: 506, }, ], ], ), ], line: 505, }, ], end: 3726, }, line: 507, column: 1, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 509, }, ], body: CodeBlock { start: 3730, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 510, }, Ident { expr: [ Symbol( "checkerrnopro", ), Call( [ [ Symbol( "\"pushnum 3; call 0 0\"", ), ], [ Symbol( "\"attempt to call\"", ), ], ], ), ], line: 510, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing stack overflow in unprotected thread\"", ), ], ], ), ], line: 511, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 513, }, ], end: 20, }, line: 513, column: 8, }, Ident { expr: [ Symbol( "checkerrnopro", ), Call( [ [ Symbol( "\"getglobal 'f'; call 0 0;\"", ), ], [ Symbol( "\"stack overflow\"", ), ], ], ), ], line: 513, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 514, }, ], end: 3761, }, next: None, line: 516, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 516, }, DoBlock( CodeBlock { start: 3764, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 523, column: 5, }, ], ], line: 524, column: 0, }, Variable { names: [ ( "a1", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawsetp 2 1; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 524, }, ], [ Symbol( "20", ), ], ], ), ], line: 524, }, ], ], line: 524, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 525, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a1", ), ], line: 525, }, ], ], ), ], line: 524, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 526, }, ], ), Symbol( "]", ), ], line: 526, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 525, }, Variable { names: [ ( "a1", false, ), ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawgetp -1 1; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 527, }, ], ], ), ], line: 527, }, ], ], line: 527, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 528, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a1", ), ], line: 528, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 528, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 527, }, ], end: 3826, }, ), DoBlock( CodeBlock { start: 3827, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 533, column: 5, }, ], ], line: 533, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 534, }, ], ), Symbol( "]", ), ], line: 533, }, ], values: [ [ Symbol( "10", ), ], ], line: 535, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"gettable -1; return *\"", ), ], ], line: 536, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 536, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 536, }, ], ], ), ], line: 536, }, ], ), ], line: 536, column: 13, }, ], ], line: 536, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 537, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 537, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 537, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 537, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 536, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"settable -2; return *\"", ), ], ], line: 540, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 540, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 540, }, ], [ Symbol( "20", ), ], ], ), ], line: 540, }, ], ), ], line: 540, column: 15, }, ], ], line: 540, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 541, }, ], ), Symbol( "]", ), ], line: 541, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 540, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 542, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 542, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 542, }, ], ], ), ], line: 541, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 545, }, ], ), Symbol( "]", ), ], line: 542, }, ], values: [ [ Symbol( "10", ), ], ], line: 546, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"rawget -1; return *\"", ), ], ], line: 547, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 547, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 547, }, ], ], ), ], line: 547, }, ], ), ], line: 547, column: 13, }, ], ], line: 547, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 548, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 548, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 548, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 548, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 547, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"rawset -2; return *\"", ), ], ], line: 551, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 551, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 551, }, ], [ Symbol( "20", ), ], ], ), ], line: 551, }, ], ), ], line: 551, column: 15, }, ], ], line: 551, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 552, }, ], ), Symbol( "]", ), ], line: 552, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 551, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 553, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 553, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 553, }, ], ], ), ], line: 552, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"rawset -1; return *\"", ), ], ], line: 557, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 557, }, ], [ Symbol( "30", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 557, }, ], ], ), ], line: 557, }, ], ), ], line: 557, column: 15, }, ], ], line: 557, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "30", ), ], ), Symbol( "]", ), ], line: 558, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 558, }, ], ], ), ], line: 557, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 559, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 559, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 559, }, ], ], ), ], line: 558, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"settable -1; return *\"", ), ], ], line: 562, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 562, }, ], [ Symbol( "40", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 562, }, ], ], ), ], line: 562, }, ], ), ], line: 562, column: 15, }, ], ], line: 562, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "40", ), ], ), Symbol( "]", ), ], line: 563, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 563, }, ], ], ), ], line: 562, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 564, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 564, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 564, }, ], ], ), ], line: 563, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"rawseti -1 100; return *\"", ), ], ], line: 567, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 567, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 567, }, ], ], ), ], line: 567, }, ], ), ], line: 567, column: 13, }, ], ], line: 567, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "100", ), ], ), Symbol( "]", ), ], line: 568, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 568, }, ], ], ), ], line: 567, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 569, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 569, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 569, }, ], ], ), ], line: 568, }, Variable { names: [ ( "prog", false, ), ], values: [ [ Symbol( "\"seti -1 200; return *\"", ), ], ], line: 572, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 572, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 572, }, ], ], ), ], line: 572, }, ], ), ], line: 572, column: 13, }, ], ], line: 572, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "200", ), ], ), Symbol( "]", ), ], line: 573, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 573, }, ], ], ), ], line: 572, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 574, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 574, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 574, }, ], ], ), ], line: 573, }, ], end: 4169, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 575, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ( Some( [ Symbol( "y", ), ], ), [ Symbol( "12", ), ], ), ], line: 577, column: 11, }, ], ], line: 577, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 577, }, Ident { expr: [ Symbol( "y", ), ], line: 578, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; pushvalue 4; gettable 2; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 578, }, ], [ Symbol( "3", ), ], [ Symbol( "\"y\"", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 578, }, ], ], line: 579, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 580, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 580, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 579, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 581, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "15", ), ], ], ), ], line: 580, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 582, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 581, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 583, }, ], ), Symbol( "]", ), ], line: 582, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 583, }, ], ], line: 583, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 583, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 584, }, ], ], ), ], line: 584, }, ], ], line: 584, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 585, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 585, }, ], ], ), ], line: 584, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 586, }, ], [ Symbol( "\"x\"", ), ], ], ), ], line: 585, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 587, }, ], ), Symbol( "]", ), ], line: 587, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), ], ], ), ], line: 586, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 587, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "p", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 589, }, ], ), ], line: 589, column: 9, }, ], [ Table { data: [], line: 589, column: 12, }, ], ], ), ], line: 589, }, ], ], line: 589, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 590, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 589, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 4301, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "p", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 590, }, ], ), Symbol( "]", ), ], line: 590, }, ], ], ), ), ], end: 4309, }, line: 590, column: 21, }, ], ], line: 590, column: 21, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 590, }, Ident { expr: [ Symbol( "x", ), ], line: 591, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 3, return 2\"", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 591, }, ], [ Symbol( "20", ), ], [ Symbol( "35", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 591, }, ], ], line: 591, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 592, }, Operator( ( "==", true, ), ), Symbol( "15", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 592, }, Operator( ( "==", true, ), ), Symbol( "35", ), ], ], ), ], line: 591, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 592, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"getfield 2 y, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 593, }, ], ], ), ], line: 593, }, ], ], line: 593, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 594, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 593, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 595, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 594, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 4368, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 595, }, ], ), Symbol( "]", ), ], line: 595, }, ], ], ), ), ], end: 4374, }, line: 595, column: 19, }, ], ], line: 595, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 596, }, ], ], ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 595, }, ], values: [ [ Lambda { args: [ "t", "i", "v", ], body: CodeBlock { start: 4389, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 596, }, ], ), Symbol( "]", ), ], line: 596, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 596, }, ], ], line: 596, column: 6, }, ], end: 4396, }, line: 596, column: 22, }, ], ], line: 596, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 596, }, ], 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: 597, }, ], ], ), ], line: 597, }, ], ], line: 597, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 598, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 597, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 598, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 599, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "16", ), ], ], ), ], line: 599, }, ], ], line: 599, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 600, }, Operator( ( "==", true, ), ), Symbol( "16", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 600, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 599, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 601, }, ], ), Symbol( "]", ), ], line: 600, }, ], values: [ [ Symbol( "'xuxu'", ), ], ], line: 601, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 601, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 602, }, ], ], ), ], line: 602, }, ], ], line: 602, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 603, }, Operator( ( "==", true, ), ), Symbol( "'xuxu'", ), ], ], ), ], line: 602, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 604, }, ], [ Symbol( "19", ), ], ], ), ], line: 603, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 605, }, ], ), Symbol( "]", ), ], line: 605, }, Operator( ( "==", true, ), ), Symbol( "19", ), ], ], ), ], line: 604, }, DoBlock( CodeBlock { start: 4492, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], ), [ Symbol( "32", ), ], ), ], line: 609, column: 8, }, ], ], line: 610, 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: 613, }, ], ], ), ], line: 610, }, ], ], line: 613, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 614, }, Operator( ( "==", true, ), ), Symbol( "32", ), ], ], ), ], line: 613, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n pushnum 33\n setglobal _012345678901234567890123456789012345678901234567890123456789\n ]]", ), ], ], ), ], line: 615, }, ], ], line: 618, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], line: 619, }, Operator( ( "==", true, ), ), Symbol( "33", ), ], ], ), ], line: 618, }, Alter { names: [ Ident { expr: [ Symbol( "_012345678901234567890123456789012345678901234567890123456789", ), ], line: 619, }, ], values: [ [ Symbol( "nil", ), ], ], line: 620, column: 3, }, ], end: 4536, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 621, }, ], values: [ [ Table { data: [], line: 624, column: 4, }, ], ], line: 624, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 624, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; return *\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 625, }, ], [ Symbol( "nil", ), ], ], ), ], line: 625, }, ], ], ), ], line: 625, }, ], ], line: 625, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 626, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 626, }, ], ), ], line: 626, column: 11, }, ], ], ), ], line: 625, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 626, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "3", ), ], ), ], line: 627, column: 7, }, ], ], line: 627, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 627, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; return *\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 628, }, ], [ Symbol( "nil", ), ], ], ), ], line: 628, }, ], ], ), ], line: 628, }, ], ], line: 628, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 629, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 629, }, ], ), ( None, [ Symbol( "'a'", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 629, column: 15, }, ], ], ), ], line: 628, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 629, }, ], 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: 630, }, ], [ Symbol( "nil", ), ], ], ), ], line: 630, }, ], ], ), ], line: 630, }, ], ], line: 630, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 631, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 631, }, ], ), ], line: 631, column: 11, }, ], ], ), ], line: 630, }, DoBlock( CodeBlock { start: 4633, code: [ Variable { names: [ ( "A", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 638, }, ], ], line: 638, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 638, }, Ident { expr: [ Symbol( "b", ), ], line: 639, }, Ident { expr: [ Symbol( "c", ), ], line: 639, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U0; pushvalue U1; pushvalue U2; return 3]]", ), ], ], ), ], line: 639, }, ], ], line: 639, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 640, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 640, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 640, }, ], ], ), ], line: 640, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 639, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 640, }, Ident { expr: [ Symbol( "b", ), ], line: 641, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[tostring U3; tonumber U4; return 2]]", ), ], ], ), ], line: 641, }, ], ], line: 641, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 642, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 642, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 641, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushnum 100; pushnum 200; replace U2; replace U1]]", ), ], ], ), ], line: 642, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 643, }, Ident { expr: [ Symbol( "c", ), ], line: 644, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 644, }, ], ], line: 644, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 645, }, Operator( ( "==", true, ), ), Symbol( "100", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 645, }, Operator( ( "==", true, ), ), Symbol( "200", ), ], ], ), ], line: 644, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[replace U2; replace U1]]", ), ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 646, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "2", ), ], ), ], line: 646, column: 15, }, ], ], ), ], line: 645, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 646, }, Ident { expr: [ Symbol( "c", ), ], line: 647, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 647, }, ], ], line: 647, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 648, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( ".", ), Symbol( "x", ), ], line: 648, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 647, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkmemory", ), Call( [], ), ], line: 648, }, ], end: 4751, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[isnull U1; return 1]]", ), ], ], ), ], line: 654, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 650, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[isnull U100; return 1]]", ), ], ], ), ], line: 655, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 654, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[pushvalue U1; return 1]]", ), ], ], ), ], line: 656, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 655, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 658, }, ], ], line: 658, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 659, }, ], [ Symbol( "1", ), ], ], ), ], line: 659, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 660, }, ], [ Symbol( "2", ), ], ], ), ], line: 659, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 661, }, ], [ Symbol( "3", ), ], ], ), ], line: 660, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 658, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 662, }, ], [ Symbol( "2", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 661, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 663, }, ], [ Symbol( "2", ), ], ], ), ], line: 663, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 662, }, DoBlock( CodeBlock { start: 4844, 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: 668, }, Operator( ( "..", true, ), ), Symbol( "\"pushcclosure 255; return 1\"", ), ], ], line: 670, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 670, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 671, }, ], ], ), ], line: 671, }, ], ], line: 672, 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: 673, }, ], ], ), ], line: 673, }, ], ], ), ], line: 673, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 673, }, ], end: 47, }, line: 674, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ Symbol( "\"isnull U256; return 1\"", ), ], ], ), ], line: 675, }, ], ], ), ], line: 674, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "A", ), Call( [ [ Symbol( "\"isnil U256; return 1\"", ), ], ], ), ], line: 676, }, ], ], ), ], line: 675, }, ], end: 4907, }, ), Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"got number\"", ), ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 683, }, ], [ Symbol( "3", ), ], [ Table { data: [], line: 683, column: 12, }, ], ], ), ], line: 677, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"got nil\"", ), ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 684, }, ], [ Symbol( "nil", ), ], [ Table { data: [], line: 684, column: 12, }, ], ], ), ], line: 683, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"got light userdata\"", ), ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 685, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 685, }, ], [ Table { data: [], line: 685, column: 17, }, ], ], ), ], line: 684, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "10", ), ], ], ), ], line: 688, }, ], ], line: 689, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 4969, code: [ Variable { names: [ ( "v", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 690, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 690, }, ], ], ), ], line: 690, }, ], ], line: 690, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 691, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 691, }, ], ], ), ], line: 690, }, ], end: 4991, }, line: 692, column: 1, }, DoBlock( CodeBlock { start: 4992, code: [ Variable { names: [ ( "v", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 694, }, ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 694, }, ], ], line: 694, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 695, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "p", ), ], line: 695, }, ], ], ), ], line: 694, }, Variable { names: [ ( "v", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 696, }, ], [ Symbol( "11", ), ], ], ), ], line: 696, }, ], ], line: 696, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v", ), ], line: 697, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "p", ), ], line: 697, }, ], ], ), ], line: 696, }, ], end: 5038, }, ), Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "true", ), ], ), ( None, [ Symbol( "false", ), ], ), ( None, [ Symbol( "4.56", ), ], ), ( None, [ Ident { expr: [ Symbol( "print", ), ], line: 699, }, ], ), ( None, [ Table { data: [], line: 699, column: 14, }, ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 699, }, ], ), ( None, [ Symbol( "\"XYZ\"", ), ], ), ], line: 699, column: 19, }, ], ], line: 700, column: 0, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 700, }, ], ], ), ], line: 700, }, ], stop: None, initial: None, code: CodeBlock { start: 5067, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 701, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 701, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 701, }, ], ], ), ], line: 701, }, ], end: 5078, }, line: 702, column: 1, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 703, }, ], ], ), ], line: 703, }, ], stop: None, initial: None, code: CodeBlock { start: 5088, code: [ Variable { names: [ ( "v1", false, ), ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 704, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 704, }, ], ], ), ], line: 704, }, ], ], line: 704, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v1", ), ], line: 705, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 705, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), ], line: 705, }, ], ], ), ], line: 704, }, ], end: 5110, }, line: 706, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 708, }, ], ], ), ], line: 706, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 710, }, ], [ Lambda { args: [], body: CodeBlock { start: 5129, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 5132, }, line: 710, column: 12, }, ], [ Symbol( "10", ), ], ], ), ], line: 708, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 710, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 712, }, ], [ Symbol( "10", ), ], ], ), Call( [], ), ], line: 712, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 711, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 714, }, ], [ Symbol( "134", ), ], ], ), ], line: 712, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 714, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 716, }, ], ], ), ], line: 716, }, Operator( ( "==", true, ), ), Symbol( "134", ), ], ], ), ], line: 715, }, DoBlock( CodeBlock { start: 5176, code: [ Variable { names: [ ( "oldmode", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"incremental\"", ), ], ], ), ], line: 721, }, ], ], line: 721, column: 7, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"atomic\"", ), ], ], ), ], line: 721, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gccolor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 723, }, ], ], ), ], line: 723, }, Operator( ( "==", true, ), ), Symbol( "\"black\"", ), ], ], ), ], line: 722, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 724, }, ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "100", ), ], ), ], line: 724, column: 11, }, ], ], ), ], line: 723, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"pause\"", ), ], ], ), ], line: 724, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 726, }, ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 726, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 725, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Ident { expr: [ Symbol( "oldmode", ), ], line: 727, }, ], ], ), ], line: 726, }, ], end: 5236, }, ), ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 5243, code: [ Variable { names: [ ( "bb", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "1", ), ], ], ), ], line: 732, }, ], ], line: 732, column: 11, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "bb", ), ], line: 733, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 733, }, ], ], ), ], line: 732, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 733, }, ], values: [ [ Ident { expr: [ Symbol( "bb", ), ], line: 734, }, ], ], line: 734, column: 3, }, ], end: 5266, }, line: 735, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 735, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 5276, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 738, }, ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 738, }, ], ], ), ], line: 738, }, ], ], line: 738, column: 8, }, ], end: 5285, }, line: 739, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 740, }, ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 740, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 739, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 740, }, ], values: [ [ Symbol( "nil", ), ], ], line: 747, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 747, column: 8, }, ], ], ), ], line: 747, }, ], ], line: 747, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 748, }, ], ], ), ], line: 747, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 749, column: 7, }, ], ], ), ], line: 749, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 749, }, ], ], ), ], line: 748, }, Alter { names: [ Ident { expr: [ Symbol( "Arr", ), ], line: 749, }, ], values: [ [ Table { data: [], line: 751, column: 4, }, ], ], line: 751, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Lim", ), ], line: 751, }, ], values: [ [ Symbol( "100", ), ], ], line: 753, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 753, }, ], step: None, code: CodeBlock { start: 5339, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 754, }, ], ), Symbol( "]", ), ], line: 754, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 754, column: 11, }, ], ], ), ], line: 754, }, ], ], line: 754, column: 12, }, ], end: 5352, }, line: 755, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 757, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 757, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 755, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 757, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 758, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 760, }, ], step: None, code: CodeBlock { start: 5396, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 761, }, ], ), Symbol( "]", ), ], line: 761, }, ], ], ), ], line: 761, }, ], end: 5406, }, line: 762, column: 1, }, Function { local: false, name: [ Symbol( "printlocks", ), ], args: [], body: CodeBlock { start: 5410, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "\"gettable R; return 1\"", ), ], ], ), ], line: 765, }, ], ], line: 766, column: 0, }, Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"n\"", ), ], ], ), ], line: 766, }, ], ], line: 766, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 767, }, ], ], ), ], line: 766, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 768, }, ], step: None, code: CodeBlock { start: 29, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 769, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 769, }, ], ], ), ], line: 769, }, ], ], ), ], line: 769, }, ], end: 39, }, line: 770, column: 1, }, ], end: 5450, }, line: 771, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 774, }, ], step: None, code: CodeBlock { start: 5457, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 775, }, ], ), Symbol( "]", ), ], line: 775, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 775, column: 11, }, ], ], ), ], line: 775, }, ], ], line: 775, column: 12, }, ], end: 5470, }, line: 776, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 778, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 5479, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 779, }, ], ), Symbol( "]", ), ], line: 779, }, ], ], ), ], line: 779, }, ], end: 5489, }, line: 780, 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: 782, }, ], ], ), ], line: 782, }, ], ], ), ], line: 782, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 780, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 785, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 782, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 785, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 788, column: 8, }, ], ], ), ], line: 788, }, ], ], line: 788, column: 9, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 788, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 792, }, ], ], ), ], line: 792, }, ], ], ), ], line: 792, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 790, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 792, }, ], values: [ [ Table { data: [], line: 796, column: 4, }, ], ], line: 796, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 796, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "0", ), ], ), ], line: 797, column: 7, }, ], ], line: 797, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 797, }, ], values: [ [ Symbol( "nil", ), ], ], line: 798, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 798, }, ], values: [ [ Symbol( "nil", ), ], ], line: 799, column: 0, }, Variable { names: [ ( "F", false, ), ], values: [], line: 799, column: 2, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 799, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 5570, code: [ Variable { names: [ ( "udval", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 801, }, ], ], ), ], line: 801, }, ], ], line: 801, column: 9, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 802, }, ], [ Ident { expr: [ Symbol( "udval", ), ], line: 802, }, ], ], ), ], line: 801, }, Variable { names: [ ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 803, }, ], ], line: 803, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 803, }, ], values: [ [ Symbol( "nil", ), ], ], line: 804, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 805, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 805, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 805, }, ], ], ), ], line: 804, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"table.insert({}, {})\"", ), ], ], ), ], line: 806, }, ], ], ), Call( [], ), ], line: 805, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 807, }, ], ], ), ], line: 806, }, Variable { names: [ ( "dummy", false, ), ], values: [ [ Table { data: [], line: 808, column: 5, }, ], ], line: 809, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 809, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 68, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 810, }, ], ], ), ], line: 810, }, Operator( ( "==", true, ), ), Symbol( "\"userdata\"", ), ], ], ), ], line: 810, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 811, }, ], ], ), ], line: 811, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "B", ), ], line: 811, }, ], ], ), ], line: 810, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 812, }, ], ], ), ], line: 811, }, ], end: 95, }, next: None, line: 813, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 813, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 814, }, ], ], line: 814, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 814, }, ], values: [ [ Ident { expr: [ Symbol( "udval", ), ], line: 815, }, ], ], line: 816, column: 0, }, Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 5678, }, line: 817, column: 1, }, ], ], line: 817, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "__gc", ), ], line: 817, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), ], line: 818, }, ], ], line: 821, column: 0, }, DoBlock( CodeBlock { start: 5684, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 822, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 822, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 824, }, ], ], line: 824, column: 8, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "5001", ), ], ], ), ], line: 825, }, ], ], line: 825, 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: 826, }, ], ], ), ], line: 826, }, Operator( ( "==", true, ), ), Symbol( "5001", ), ], ], ), ], line: 825, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 827, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 827, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], ], ), ], line: 826, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 827, }, ], values: [ [ Symbol( "nil", ), ], ], line: 828, column: 3, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 828, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 830, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 830, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 829, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 830, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 832, }, ], ], line: 832, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 832, }, 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: 834, }, ], end: 91, }, line: 834, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 835, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 835, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 834, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 835, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 837, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 837, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 836, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 837, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 839, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 840, }, ], ], line: 840, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 840, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 841, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 137, code: [], end: 138, }, line: 842, column: 9, }, ], ), ], line: 842, column: 10, }, ], ], line: 843, 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: 843, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 843, }, ], ], ), ], line: 843, }, ], end: 160, }, line: 843, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 844, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 844, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 843, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 844, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 846, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 846, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 845, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 846, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 848, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 848, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 847, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 848, }, ], end: 5888, }, ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 850, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 853, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 856, }, ], ], line: 856, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 856, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 856, }, ], ], ), ], line: 856, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 856, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 856, }, ], ], ), ], line: 856, }, ], ], line: 856, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 856, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 857, }, ], ], line: 857, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 857, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 857, }, ], ], ), ], line: 857, }, Alter { names: [ Ident { expr: [ Symbol( "nb", ), ], line: 857, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 857, }, ], ], ), ], line: 857, }, ], ], line: 857, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 857, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 858, }, ], ], line: 858, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 858, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 858, }, ], ], ), ], line: 858, }, Alter { names: [ Ident { expr: [ Symbol( "nc", ), ], line: 858, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 858, }, ], ], ), ], line: 858, }, ], ], line: 858, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 858, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 861, }, ], ], line: 861, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 861, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 862, }, ], ], line: 862, column: 8, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"FILE%* expected, got userdata\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), ], line: 864, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 864, }, ], ], ), ], line: 862, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"FILE%* expected, got userdata\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), ], line: 865, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 865, }, ], ], ), ], line: 864, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 867, }, ], ], ), ], line: 867, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 867, }, ], ], ), ], line: 867, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 865, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 867, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 869, }, ], ], ), ], line: 869, }, ], ], line: 869, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "e", ), ], line: 869, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 870, }, ], ], ), ], line: 870, }, ], ], line: 870, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 870, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 871, }, ], ], ), ], line: 871, }, ], ], line: 871, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 871, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 872, }, ], ], ), ], line: 872, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 872, }, ], ], ), ], line: 872, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 872, }, ], ], ), ], line: 872, }, ], ), ], line: 872, column: 24, }, ], ], line: 872, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 873, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 873, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 873, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 873, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 873, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 873, }, ], ], ), ], line: 872, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 873, }, ], values: [ [ Symbol( "nil", ), ], ], line: 875, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 875, }, ], values: [ [ Symbol( "nil", ), ], ], line: 875, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 875, }, ], values: [ [ Symbol( "nil", ), ], ], line: 875, column: 12, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 876, }, ], ], ), ], line: 875, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 876, }, ], ], ), ], line: 876, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 876, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 881, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 881, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nc", ), ], line: 881, }, ], ], ), ], line: 878, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 881, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 883, }, ], ], ), ], line: 883, }, ], ], line: 883, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 884, }, ], ], ), ], line: 884, }, Operator( ( "==", true, ), ), Symbol( "'userdata'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 884, }, ], ], ), ], line: 884, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tt", ), ], line: 884, }, ], ], ), ], line: 883, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 884, }, ], values: [ [ Symbol( "nil", ), ], ], line: 885, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "b", ), ], line: 885, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 886, }, ], ], line: 886, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 886, }, ], values: [ [ Symbol( "nil", ), ], ], line: 887, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 887, }, ], values: [ [ Symbol( "nil", ), ], ], line: 888, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 888, }, ], values: [ [ Symbol( "nil", ), ], ], line: 889, column: 3, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 890, }, ], ], ), ], line: 889, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 890, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 891, }, ], ], line: 891, column: 8, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 892, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 892, }, ], ), ], line: 892, column: 11, }, ], ], ), ], line: 891, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 892, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 893, }, ], ], ), ], line: 893, }, ], ], line: 893, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 893, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 895, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 894, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 897, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n5", ), ], line: 897, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 897, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nb", ), ], line: 897, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 897, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), ], line: 897, }, ], ], ), ], line: 895, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 897, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 899, }, Ident { expr: [ Symbol( "na", ), ], line: 902, }, ], values: [ [ Table { data: [], line: 902, column: 6, }, ], [ Table { data: [], line: 902, column: 9, }, ], ], line: 903, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "30", ), ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 6274, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 904, }, ], ), Symbol( "]", ), ], line: 904, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 904, }, ], ], line: 904, column: 11, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 905, }, ], ), Symbol( "]", ), ], line: 905, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 905, }, ], ), ], line: 905, column: 14, }, ], ], ), ], line: 904, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 906, }, ], ), Symbol( "]", ), ], line: 905, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 906, }, ], ), Symbol( "]", ), ], line: 906, }, ], ], ), ], line: 906, }, ], ], line: 906, column: 14, }, ], end: 6315, }, line: 907, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 907, }, ], values: [ [ Table { data: [], line: 908, column: 4, }, ], ], line: 908, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 908, }, ], values: [ [ Symbol( "nil", ), ], ], line: 909, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 909, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 910, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 909, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "30", ), ], step: None, code: CodeBlock { start: 6340, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 911, }, ], ), Symbol( "]", ), ], line: 911, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 911, }, ], ), Symbol( "]", ), ], line: 911, }, ], ], ), ], line: 911, }, ], end: 6353, }, line: 911, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 911, }, ], values: [ [ Symbol( "nil", ), ], ], line: 915, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 915, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 6365, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 916, }, ], ), Symbol( "]", ), ], line: 916, }, ], ], ), ], line: 916, }, ], end: 6375, }, line: 917, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 917, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "41", ), ], ], ), ], line: 919, }, ], ], line: 919, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 919, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 919, }, ], ), ], line: 919, column: 20, }, ], ], ), ], line: 919, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"objsize 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 920, }, ], ], ), ], line: 920, }, Operator( ( "==", true, ), ), Symbol( "41", ), ], ], ), ], line: 919, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 920, }, ], values: [ [ Table { data: [], line: 921, column: 4, }, ], ], line: 921, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 921, }, ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "x", ), ], line: 922, }, ], ), [ Symbol( "1", ), ], ), ], line: 922, column: 9, }, ], ], line: 922, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 922, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 923, }, ], ], ), ], line: 923, }, ], ], line: 923, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 923, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 926, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 924, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 927, }, ], ], ), ], line: 927, }, ], stop: None, initial: None, code: CodeBlock { start: 6448, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 927, }, ], ), Symbol( "]", ), ], line: 927, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 927, }, ], ], line: 927, column: 6, }, ], end: 6455, }, line: 927, column: 15, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 927, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 929, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 929, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 929, }, ], ], ), ], line: 928, }, 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: 932, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 932, }, ], [ Symbol( "20", ), ], ], ), ], line: 932, }, ], ], ), ], line: 929, }, 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: 933, }, ], ], ), ], line: 932, }, 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: 934, }, ], ], ), ], line: 933, }, 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: 935, column: 11, }, ], [ Table { data: [], line: 935, column: 14, }, ], ], ), ], line: 935, }, ], ], ), ], line: 934, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare EQ 2 3; return 1\"", ), ], ], ), ], line: 936, }, ], ], ), ], line: 935, }, 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: 937, }, ], ], ), ], line: 936, }, DoBlock( CodeBlock { start: 6554, code: [ Variable { names: [ ( "map", false, ), ], values: [ [ Table { data: [], line: 941, column: 5, }, ], ], line: 942, 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: 942, }, ], ), Symbol( "]", ), ], line: 942, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 942, }, ], ), Symbol( "]", ), ], line: 942, }, ], ], ), ), ], end: 28, }, line: 942, column: 23, }, ], ), ], line: 942, column: 24, }, ], ], line: 943, 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: 944, }, ], ], line: 944, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 945, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 945, }, ], ], ), ], line: 944, }, Alter { names: [ Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "u", ), ], line: 946, }, ], ), Symbol( "]", ), ], line: 945, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 946, }, ], ], line: 947, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "u", ), ], line: 947, }, ], ], ), ), ], end: 61, }, line: 948, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 949, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 949, }, ], ], ), ], line: 948, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 950, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "11", ), ], ], ), ], line: 950, }, ], ], ), ], line: 949, }, 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: 951, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 951, }, ], ], ), ], line: 951, }, ], ], ), ], line: 950, }, 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: 952, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 952, }, ], ], ), ], line: 952, }, ], ], ), ], line: 951, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 952, }, ], values: [ [ Symbol( "nil", ), ], ], line: 953, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 954, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 954, }, ], ], ), ], line: 953, }, ], end: 6696, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 955, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "t", ), ], line: 957, }, ], values: [ [ Table { data: [], line: 962, column: 6, }, ], ], line: 962, 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: 962, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 970, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 970, }, ], values: [ [ Symbol( "1", ), ], ], line: 971, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 971, }, ], values: [ [ Symbol( "1", ), ], ], line: 972, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 972, }, ], values: [ [ Symbol( "1", ), ], ], line: 973, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 973, }, ], values: [ [ Symbol( "1", ), ], ], line: 974, column: 3, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "sethook", ), Call( [], ), ], line: 974, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 975, }, ], values: [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "t", ), ], line: 976, }, ], ], line: 976, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 977, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), ], ], ), ], line: 976, }, Alter { names: [ Ident { expr: [ Symbol( "line", ), ], line: 977, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 978, }, ], ], line: 978, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 979, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 979, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "line", ), ], line: 979, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 978, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 980, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "6", ), ], ), Symbol( "]", ), ], line: 980, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "line", ), ], line: 980, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ], ), ], line: 979, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "7", ), ], ), Symbol( "]", ), ], line: 981, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 980, }, DoBlock( CodeBlock { start: 6801, code: [ Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"@off\"", ), ], ], ), ], line: 986, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 986, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 988, column: 5, }, ], ], line: 989, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "20", ), ], step: None, code: CodeBlock { start: 20, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 990, }, ], ), Symbol( "]", ), ], line: 990, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 990, }, ], ], ), ], line: 990, }, ], ], line: 990, column: 11, }, ], end: 32, }, line: 991, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "20", ), ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 41, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 993, }, ], ), Symbol( "]", ), ], line: 993, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"@expected error in gc\"", ), ], ], ), ], line: 994, }, ], end: 21, }, line: 994, column: 12, }, ], ), ], line: 994, column: 13, }, ], ], ), ], line: 993, }, ], end: 65, }, line: 995, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Symbol( "20", ), ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 74, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 997, }, ], ), Symbol( "]", ), ], line: 997, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"A=A+1\"", ), ], ], ), Call( [], ), ], line: 997, }, ], end: 23, }, line: 997, column: 23, }, ], ), ], line: 997, column: 24, }, ], ], ), ], line: 997, }, ], end: 100, }, line: 998, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 998, }, ], values: [ [ Symbol( "nil", ), ], ], line: 999, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "A", ), ], line: 999, }, ], values: [ [ Symbol( "0", ), ], ], line: 1000, column: 5, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1000, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 1002, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 1001, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 1002, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"@on\"", ), ], ], ), ], line: 1003, }, ], end: 6927, }, ), DoBlock( CodeBlock { start: 6928, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 1009, column: 5, }, ], ], line: 1009, column: 6, }, Variable { names: [ ( "lim", false, ), ], values: [ [ Symbol( "30", ), ], ], line: 1010, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1010, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1010, }, ], ), Symbol( "]", ), ], line: 1010, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 1010, }, ], ], ), ], line: 1010, }, ], ], line: 1010, column: 11, }, ], end: 29, }, line: 1010, column: 19, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1011, }, ], 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: 1011, }, ], ), Symbol( "]", ), ], line: 1011, }, ], ], ), ], line: 1011, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 1011, }, ], ], ), ], line: 1011, }, ], end: 51, }, line: 1011, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1012, }, ], 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: 1012, }, ], ], ), ], line: 1012, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1012, }, ], ), Symbol( "]", ), ], line: 1012, }, ], ], ), ], line: 1012, }, ], end: 73, }, line: 1012, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1013, }, ], 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: 1013, }, ], ), Symbol( "]", ), ], line: 1013, }, ], ), Symbol( "]", ), ], line: 1013, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 1013, }, ], ], line: 1013, column: 9, }, ], end: 90, }, line: 1013, column: 17, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1014, }, ], 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: 1014, }, ], ], ), ], line: 1014, }, ], ), Symbol( "]", ), ], line: 1014, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 1014, }, ], ], line: 1014, column: 11, }, ], end: 109, }, line: 1014, 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: 1015, }, ], ], ), ], line: 1015, }, ], ], ), ], line: 1015, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 1014, }, ], end: 7053, }, ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1021, }, ], ], ), ], line: 1016, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 1021, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1022, }, ], ], line: 1022, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1023, }, ], ], ), ], line: 1022, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1025, }, ], [ Symbol( "\"X='a'; return 'a'\"", ), ], ], ), ], line: 1025, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 1023, }, 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: 1028, }, ], [ Symbol( "\"function f () return 'alo', 3 end; f()\"", ), ], ], ), ], line: 1028, }, ], ], ), ], line: 1028, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 1025, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1028, }, Ident { expr: [ Symbol( "b", ), ], line: 1030, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1030, }, ], [ Symbol( "\"return f()\"", ), ], ], ), ], line: 1030, }, ], ], line: 1030, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1031, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1031, }, Operator( ( "==", true, ), ), Symbol( "'3'", ), ], ], ), ], line: 1030, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1033, }, ], [ Symbol( "\"_ERRORMESSAGE = nil\"", ), ], ], ), ], line: 1031, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1033, }, Ident { expr: [ Symbol( "_", ), ], line: 1035, }, Ident { expr: [ Symbol( "b", ), ], line: 1035, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1035, }, ], [ Symbol( "\"return sin(1)\"", ), ], ], ), ], line: 1035, }, ], ], line: 1035, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1036, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1036, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 1035, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1036, }, Ident { expr: [ Symbol( "b", ), ], line: 1039, }, Ident { expr: [ Symbol( "c", ), ], line: 1039, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1039, }, ], [ Symbol( "\"return a+\"", ), ], ], ), ], line: 1039, }, ], ], line: 1039, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1040, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 1040, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1040, }, ], ], ), ], line: 1040, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 1039, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1042, }, ], ], ), ], line: 1040, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1042, }, Ident { expr: [ Symbol( "b", ), ], line: 1043, }, Ident { expr: [ Symbol( "c", ), ], line: 1043, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1043, }, ], [ 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: 1043, }, ], ], line: 1052, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1053, }, Operator( ( "==", true, ), ), Symbol( "\"ok\"", ), ], ], ), ], line: 1052, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1055, }, ], ], ), ], line: 1053, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 1055, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1058, }, ], ], line: 1058, column: 7, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1059, }, ], ], ), ], line: 1058, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1060, }, ], [ Symbol( "\"a = {}\"", ), ], ], ), ], line: 1059, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1061, }, ], [ MultilineString( "[[getglobal \"a\"; pushstring \"x\"; pushint 1;\n settable -3]]", ), ], ], ), ], line: 1060, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1063, }, ], [ Symbol( "\"return a.x\"", ), ], ], ), ], line: 1063, }, Operator( ( "==", true, ), ), Symbol( "\"1\"", ), ], ], ), ], line: 1062, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 1065, }, ], ], ), ], line: 1063, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 1065, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1067, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 1067, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing to-be-closed variables\"", ), ], ], ), ], line: 1069, }, DoBlock( CodeBlock { start: 7281, code: [ Variable { names: [ ( "openresource", false, ), ], values: [ [ Table { data: [], line: 1076, column: 5, }, ], ], line: 1078, column: 0, }, Function { local: true, name: [ Symbol( "newresource", ), ], args: [], body: CodeBlock { start: 10, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ], line: 1079, column: 8, }, ], [ Table { data: [ ( Some( [ Symbol( "__close", ), ], ), [ Lambda { args: [ "y", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "openresource", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1080, }, ], ), Symbol( "]", ), ], line: 1080, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 1080, }, ], ], ), ], line: 1080, }, Alter { names: [ Ident { expr: [ Symbol( "openresource", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1081, }, ], ), Symbol( "]", ), ], line: 1080, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1081, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1081, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1082, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 1082, column: 11, }, ], end: 45, }, line: 1083, column: 1, }, ], ), ], line: 1083, column: 2, }, ], ], ), ], line: 1079, }, ], ], line: 1083, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "openresource", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1084, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1083, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 1084, }, ], ], line: 1085, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 1085, }, ], ], ), ), ], end: 69, }, line: 1086, column: 1, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n call 0 1 # create resource\n pushnil\n toclose -2 # mark call result to be closed\n toclose -1 # mark nil to be closed (will be ignored)\n return 2\n ]]", ), ], [ Ident { expr: [ Symbol( "newresource", ), ], line: 1094, }, ], ], ), ], line: 1088, }, ], ], line: 1094, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1095, }, Operator( ( "==", true, ), ), Symbol( "11", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1095, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 1094, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1096, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 1095, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n call 0 1 # create resource\n toclose 2 # mark it to be closed\n return 2\n ]]", ), ], [ Ident { expr: [ Symbol( "newresource", ), ], line: 1103, }, ], ], ), ], line: 1099, }, ], ), ], line: 1103, column: 5, }, ], ], line: 1103, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1104, }, ], ], ), ], line: 1104, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1104, }, Operator( ( "==", true, ), ), Symbol( "11", ), ], ], ), ], line: 1103, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1105, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 1104, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "[[\n call 0 1 # create resource\n toclose -1 # mark it to be closed\n error # resource is the error object\n ]]", ), ], ], ), ], line: 1108, }, ], [ Ident { expr: [ Symbol( "newresource", ), ], line: 1112, }, ], ], ), ], line: 1108, }, ], ], line: 1112, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1113, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 1113, }, Operator( ( "==", true, ), ), Symbol( "11", ), ], ], ), ], line: 1112, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1114, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 1113, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "[[\n newtable # create non-closable object\n toclose -1 # mark it to be closed (should raise an error)\n abort # will not be executed\n ]]", ), ], ], ), ], line: 1117, }, ], ], ), ], line: 1117, }, ], ], line: 1121, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1122, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1123, }, ], [ Symbol( "\"non%-closable value\"", ), ], ], ), ], line: 1122, }, ], ], ), ], line: 1121, }, Function { local: true, name: [ Symbol( "check", ), ], args: [ "n", ], body: CodeBlock { start: 211, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "openresource", ), ], line: 1126, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 1126, }, ], ], ), ], line: 1126, }, ], end: 219, }, line: 1127, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "xxx", ), ], line: 1127, }, ], values: [ [ Symbol( "true", ), ], ], line: 1131, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n pushvalue 2 # stack: S, NR, CH, NR\n call 0 1 # create resource; stack: S, NR, CH, R\n toclose -1 # mark it to be closed\n pushvalue 2 # stack: S, NR, CH, R, NR\n call 0 1 # create another resource; stack: S, NR, CH, R, R\n toclose -1 # mark it to be closed\n pushvalue 3 # stack: S, NR, CH, R, R, CH\n pushint 2 # there should be two open resources\n call 1 0 # stack: S, NR, CH, R, R\n closeslot -1 # close second resource\n pushvalue 3 # stack: S, NR, CH, R, R, CH\n pushint 1 # there should be one open resource\n call 1 0 # stack: S, NR, CH, R, R\n closeslot 4\n setglobal \"xxx\" # previous op. erased the slot\n pop 1 # pop other resource from the stack\n pushint *\n return 1 # return stack size\n ]]", ), ], [ Ident { expr: [ Symbol( "newresource", ), ], line: 1150, }, ], [ Ident { expr: [ Symbol( "check", ), ], line: 1150, }, ], ], ), ], line: 1131, }, ], ], line: 1150, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1151, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "xxx", ), ], line: 1151, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 1150, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n pushvalue 2 # stack: S, NR, CH, NR\n call 0 1 # create resource; stack: S, NR, CH, R\n toclose -1 # mark it to be closed\n pushvalue 2 # stack: S, NR, CH, R, NR\n call 0 1 # create another resource; stack: S, NR, CH, R, R\n toclose -1 # mark it to be closed\n pushvalue 3 # stack: S, NR, CH, R, R, CH\n pushint 2 # there should be two open resources\n call 1 0 # stack: S, NR, CH, R, R\n pop 1 # pop second resource\n pushvalue 3 # stack: S, NR, CH, R, CH\n pushint 1 # there should be one open resource\n call 1 0 # stack: S, NR, CH, R\n pop 1 # pop other resource from the stack\n pushvalue 3 # stack: S, NR, CH, CH\n pushint 0 # there should be no open resources\n call 1 0 # stack: S, NR, CH\n pushint *\n return 1 # return stack size\n ]]", ), ], [ Ident { expr: [ Symbol( "newresource", ), ], line: 1174, }, ], [ Ident { expr: [ Symbol( "check", ), ], line: 1174, }, ], ], ), ], line: 1154, }, ], ], line: 1174, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1175, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1174, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "[[\n pushint 32\n toclose -1\n ]]", ), ], ], ), ], line: 1178, }, ], ], ), ], line: 1178, }, ], ], line: 1181, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 1182, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1182, }, ], [ Symbol( "\"(C temporary)\"", ), ], ], ), ], line: 1182, }, ], ], ), ], line: 1181, }, ], end: 7576, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"memory-allocation errors\"", ), ], ], ), ], line: 1184, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Symbol( "\"block too big\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), ], line: 1195, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "maxinteger", ), ], line: 1195, }, ], ], ), ], line: 1193, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1195, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"local a={}; for i=1,100000 do a[i]=i end\"", ), ], ], ), ], line: 1197, }, ], ], line: 1197, column: 5, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 1197, }, Ident { expr: [ Symbol( "checkerr", ), Call( [ [ Ident { expr: [ Symbol( "MEMERRMSG", ), ], line: 1199, }, ], [ Ident { expr: [ Symbol( "f", ), ], line: 1199, }, ], ], ), ], line: 1198, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [], ), ], line: 1199, }, Function { local: false, name: [ Symbol( "testbytes", ), ], args: [ "s", "f", ], body: CodeBlock { start: 7624, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1208, }, Variable { names: [ ( "M", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 1209, }, ], ], line: 1210, column: 0, }, Variable { names: [ ( "oldM", false, ), ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 1210, }, ], ], line: 1211, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], ], line: 1212, column: 0, }, WhileLoop { condition: [ Symbol( "true", ), ], body: CodeBlock { start: 24, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1213, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1213, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "M", ), ], line: 1214, }, ], ], ), ], line: 1213, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1214, }, Ident { expr: [ Symbol( "b", ), ], line: 1215, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pcall 0 1 0; pushstatus; return 2\"", ), ], [ Ident { expr: [ Symbol( "f", ), ], line: 1215, }, ], ], ), ], line: 1215, }, ], ], line: 1215, column: 12, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1215, }, IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 1217, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1217, }, Operator( ( "==", true, ), ), Symbol( "\"OK\"", ), ], body: CodeBlock { start: 38, code: [ Break, ], end: 40, }, next: None, line: 1217, column: 9, }, IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 1218, }, Operator( ( "~=", true, ), ), Symbol( "\"OK\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1218, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "MEMERRMSG", ), ], line: 1218, }, ], body: CodeBlock { start: 49, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1219, }, ], [ Symbol( "0", ), ], ], ), ], line: 1219, }, ], end: 56, }, next: None, line: 1220, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "M", ), ], line: 1220, }, ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 1221, }, Operator( ( "+", true, ), ), Symbol( "7", ), ], ], line: 1221, column: 5, }, ], end: 86, }, line: 1222, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"minimum memory for %s: %d bytes\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 1223, }, ], [ Ident { expr: [ Symbol( "M", ), ], line: 1223, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "oldM", ), ], line: 1223, }, ], ], ), ], line: 1223, }, ], ], ), ], line: 1222, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1224, }, ], ], ), ), ], end: 7728, }, line: 1225, column: 1, }, Function { local: false, name: [ Symbol( "testalloc", ), ], args: [ "s", "f", ], body: CodeBlock { start: 7735, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1233, }, Variable { names: [ ( "M", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 1235, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], ], line: 1236, column: 0, }, WhileLoop { condition: [ Symbol( "true", ), ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1237, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1237, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [ [ Ident { expr: [ Symbol( "M", ), ], line: 1238, }, ], ], ), ], line: 1237, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1238, }, Ident { expr: [ Symbol( "b", ), ], line: 1239, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pcall 0 1 0; pushstatus; return 2\"", ), ], [ Ident { expr: [ Symbol( "f", ), ], line: 1239, }, ], ], ), ], line: 1239, }, ], ], line: 1239, column: 12, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [], ), ], line: 1239, }, IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 1241, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1241, }, Operator( ( "==", true, ), ), Symbol( "\"OK\"", ), ], body: CodeBlock { start: 37, code: [ Break, ], end: 39, }, next: None, line: 1241, column: 9, }, IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 1242, }, Operator( ( "~=", true, ), ), Symbol( "\"OK\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 1242, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "MEMERRMSG", ), ], line: 1242, }, ], body: CodeBlock { start: 48, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1243, }, ], [ Symbol( "0", ), ], ], ), ], line: 1243, }, ], end: 55, }, next: None, line: 1244, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "M", ), ], line: 1244, }, ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 1245, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 1245, column: 5, }, ], end: 77, }, line: 1246, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"minimum allocations for %s: %d allocations\"", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 1247, }, ], [ Ident { expr: [ Symbol( "M", ), ], line: 1247, }, ], ], ), ], line: 1247, }, ], ], ), ], line: 1246, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1248, }, ], ], ), ), ], end: 7828, }, line: 1249, column: 1, }, Function { local: true, name: [ Symbol( "testamem", ), ], args: [ "s", "f", ], body: CodeBlock { start: 7836, code: [ Ident { expr: [ Symbol( "testalloc", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 1253, }, ], [ Ident { expr: [ Symbol( "f", ), ], line: 1253, }, ], ], ), ], line: 1253, }, Return( Some( [ [ Ident { expr: [ Symbol( "testbytes", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 1254, }, ], [ Ident { expr: [ Symbol( "f", ), ], line: 1254, }, ], ], ), ], line: 1254, }, ], ], ), ), ], end: 7850, }, line: 1255, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 1255, }, ], values: [ [ Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"doing nothing\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7859, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 7862, }, line: 1259, column: 12, }, ], ], ), ], line: 1259, }, ], ], line: 1259, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1260, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 1259, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"state creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7876, code: [ Variable { names: [ ( "st", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1265, }, ], ], line: 1266, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "st", ), ], line: 1266, }, ], body: CodeBlock { start: 11, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "st", ), ], line: 1266, }, ], ], ), ], line: 1266, }, ], end: 18, }, next: None, line: 1266, column: 10, }, Return( Some( [ [ Ident { expr: [ Symbol( "st", ), ], line: 1267, }, ], ], ), ), ], end: 7897, }, line: 1268, column: 1, }, ], ], ), ], line: 1260, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"empty-table creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7905, code: [ Return( Some( [ [ Table { data: [], line: 1271, column: 3, }, ], ], ), ), ], end: 7909, }, line: 1272, column: 1, }, ], ], ), ], line: 1268, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"string creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7917, code: [ Return( Some( [ [ Symbol( "\"XXX\"", ), Operator( ( "..", true, ), ), Symbol( "\"YYY\"", ), ], ], ), ), ], end: 7922, }, line: 1276, column: 1, }, ], ], ), ], line: 1272, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"coroutine creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7930, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "create", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 1279, }, ], ], ), ], line: 1279, }, ], ], ), ), ], end: 7938, }, line: 1280, column: 1, }, ], ], ), ], line: 1276, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"to-be-closed variables\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 7946, code: [ Variable { names: [ ( "flag", false, ), ], values: [], line: 1285, column: 2, }, DoBlock( CodeBlock { start: 3, code: [ Variable { names: [ ( "x", true, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 1288, column: 4, }, ], [ Table { data: [ ( Some( [ Symbol( "__close", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "flag", ), ], line: 1288, }, ], values: [ [ Symbol( "true", ), ], ], line: 1288, column: 3, }, ], end: 21, }, line: 1288, column: 15, }, ], ), ], line: 1288, column: 16, }, ], ], ), ], line: 1287, }, ], ], line: 1288, column: 17, }, Alter { names: [ Ident { expr: [ Symbol( "flag", ), ], line: 1288, }, ], values: [ [ Symbol( "false", ), ], ], line: 1290, column: 0, }, Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [], line: 1290, column: 5, }, ], ], line: 1290, column: 5, }, ], end: 35, }, ), Return( Some( [ [ Ident { expr: [ Symbol( "flag", ), ], line: 1292, }, ], ], ), ), ], end: 7984, }, line: 1293, column: 1, }, ], ], ), ], line: 1280, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 1293, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawgeti R 1; return 1\"", ), ], ], ), ], line: 1299, }, ], ], line: 1299, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "mt", ), ], line: 1300, }, ], ], ), ], line: 1300, }, Operator( ( "==", true, ), ), Symbol( "\"thread\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "running", ), Call( [], ), ], line: 1300, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 1300, }, ], ], ), ], line: 1299, }, Function { local: false, name: [ Symbol( "expand", ), ], args: [ "n", "s", ], body: CodeBlock { start: 8017, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 1305, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "\"\"", ), ], ], ), ), ], end: 8, }, next: None, line: 1305, column: 8, }, Variable { names: [ ( "e", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"=\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 1306, }, ], ], ), ], line: 1306, }, ], ], line: 1307, 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: 1307, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 1308, }, ], [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 1308, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 1308, }, ], ], ), ], line: 1308, }, ], [ Ident { expr: [ Symbol( "e", ), ], line: 1308, }, ], ], ), ], line: 1307, }, ], ], ), ), ], end: 8059, }, line: 1309, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "G", ), ], line: 1309, }, ], values: [ [ Symbol( "0", ), ], ], line: 1311, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1311, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1311, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 1311, }, ], ], line: 1311, column: 14, }, Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Symbol( "20", ), ], [ Symbol( "\"G=G+1\"", ), ], ], ), ], line: 1312, }, ], ], ), Call( [], ), ], line: 1311, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "G", ), ], line: 1313, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 1312, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1313, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"running code on new thread\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8102, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doonnewstack", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 1316, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 8112, }, line: 1317, column: 1, }, ], ], ), ], line: 1313, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"loadstring\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8120, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 1323, }, ], ], ), ), ], end: 8126, }, line: 1324, column: 1, }, ], ], ), ], line: 1317, }, 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: 1333, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 1333, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1337, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 1337, }, ], ], line: 1338, 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: 1338, }, ], [ Symbol( "\"w\"", ), ], ], ), ], line: 1338, }, ], ], ), ], line: 1338, }, ], ], line: 1338, column: 14, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 1339, }, ], ], ), ], line: 1338, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 1339, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dofile\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8176, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1342, }, ], ], ), ], line: 1342, }, ], ], line: 1343, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1343, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1343, }, ], ], ), ), ], end: 8190, }, line: 1344, column: 1, }, ], ], ), ], line: 1340, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1345, }, ], ], ), ], line: 1345, }, ], ], ), ], line: 1344, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 1346, }, Operator( ( "==", true, ), ), Symbol( "\"aaax\"", ), ], ], ), ], line: 1345, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"gsub\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8215, 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: 1352, }, Operator( ( "..", true, ), ), Symbol( "'b'", ), ], ], ), ), ], end: 22, }, line: 1352, column: 22, }, ], ], ), ], line: 1352, }, ], ], line: 1353, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 1353, }, Operator( ( "==", true, ), ), Symbol( "'ablo ablo'", ), ], ), Ident { expr: [], line: 1353, }, ], ], ), ), ], end: 8245, }, line: 1354, column: 1, }, ], ], ), ], line: 1346, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dump/undump\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8253, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 1357, }, ], ], ), ], line: 1357, }, ], ], line: 1358, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 1358, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1358, }, ], ], ), ], line: 1358, }, ], ], line: 1358, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1358, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 1359, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1359, }, ], ], ), ], line: 1359, }, ], ], line: 1360, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1360, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1360, }, ], ], ), ), ], end: 8286, }, line: 1361, column: 1, }, ], ], ), ], line: 1354, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 1363, }, ], ], line: 1363, column: 8, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"file creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8302, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1365, }, ], [ Symbol( "'w'", ), ], ], ), ], line: 1365, }, ], ], ), ], line: 1365, }, ], ], line: 1365, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Symbol( "\"nomenaoexistente\"", ), ], ], ), ], line: 1366, }, ], ], ), ], line: 1365, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 1367, }, ], ], ), ], line: 1366, }, Return( Some( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Symbol( "'nomenaoexistente'", ), ], ], ), ], line: 1368, }, ], ], ), ), ], end: 8336, }, line: 1369, column: 1, }, ], ], ), ], line: 1363, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 1370, }, ], ], ), ], line: 1370, }, ], ], ), ], line: 1369, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"table creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8353, code: [ Variable { names: [ ( "a", false, ), ( "lim", false, ), ], values: [ [ Table { data: [], line: 1373, column: 7, }, ], [ Symbol( "10", ), ], ], line: 1374, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1374, }, ], step: None, code: CodeBlock { start: 16, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1374, }, ], ), Symbol( "]", ), ], line: 1374, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 1374, }, ], ], line: 1374, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1374, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 1374, }, ], values: [ [ Table { data: [], line: 1374, column: 16, }, ], ], line: 1374, column: 16, }, ], end: 33, }, line: 1374, column: 24, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 1375, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 1375, }, ], ], ), ], line: 1375, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 1375, }, ], ), Symbol( "]", ), ], line: 1375, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 1375, }, ], ), Ident { expr: [], line: 1375, }, ], ], ), ), ], end: 8408, }, line: 1376, column: 1, }, ], ], ), ], line: 1370, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"constructors\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8416, 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: 1379, column: 34, }, ], ], line: 1380, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1380, }, ], ], ), ], line: 1380, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "e", ), ], line: 1380, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ), Ident { expr: [], line: 1380, }, ], ], ), ), ], end: 8466, }, line: 1381, column: 1, }, ], ], ), ], line: 1376, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 1383, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "close", ), ], line: 1383, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1384, column: 3, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"closure creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8481, code: [ Function { local: false, name: [ Symbol( "close", ), ], args: [ "b", ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1387, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 1387, }, ], ], ), ), ], end: 10, }, line: 1387, column: 10, }, ], ], ), ), ], end: 16, }, line: 1388, column: 1, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "close", ), Call( [ [ Symbol( "2", ), ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 1389, }, Operator( ( "==", true, ), ), Symbol( "6", ), ], ), Ident { expr: [], line: 1389, }, ], ], ), ), ], end: 8510, }, line: 1390, column: 1, }, ], ], ), ], line: 1384, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"using coroutines\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8518, 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: 1394, }, ], ], ), ], line: 1394, }, Return( Some( [ [ Table { data: [], line: 1395, column: 3, }, ], ], ), ), ], end: 27, }, line: 1396, column: 1, }, ], ], ), ], line: 1393, }, ], ], line: 1396, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1397, }, ], ], ), ], line: 1397, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 1396, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 1398, }, ], ], ), ), ], end: 8564, }, line: 1399, column: 1, }, ], ], ), ], line: 1390, }, DoBlock( CodeBlock { start: 8566, code: [ Variable { names: [ ( "lim", false, ), ], values: [ [ Symbol( "100", ), ], ], line: 1403, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 1403, column: 5, }, ], ], line: 1403, column: 6, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 1403, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 1403, }, ], ), Symbol( "]", ), ], line: 1403, }, ], values: [ [ Symbol( "\"01234567890123456789\"", ), ], ], line: 1403, column: 6, }, ], end: 24, }, line: 1403, 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: 1405, }, ], [ Symbol( "\",\"", ), ], ], ), ], line: 1405, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 1405, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 1405, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 1405, }, ], ], ), ), ], end: 52, }, line: 1406, column: 1, }, ], ], ), ], line: 1403, }, ], end: 8620, }, ), Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"growing stack\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 8627, code: [ Function { local: true, name: [ Symbol( "foo", ), ], args: [ "n", ], body: CodeBlock { start: 6, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 1411, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Symbol( "1", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "foo", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 1411, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 1411, }, ], ], ), ), ], end: 18, }, next: None, line: 1411, column: 18, }, ), line: 1411, column: 18, }, ], end: 25, }, line: 1412, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "foo", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 1413, }, ], ], ), ), ], end: 8658, }, line: 1414, column: 1, }, ], ], ), ], line: 1407, }, DoBlock( CodeBlock { start: 8660, code: [ Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[rawcheckstack 500000; return 1]]", ), ], ], ), ], line: 1420, }, ], ], line: 1420, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 1421, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 1420, }, Variable { names: [ ( "L", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1422, }, ], ], line: 1422, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1422, }, Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 1423, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "L", ), ], line: 1424, }, ], [ MultilineString( "[[rawcheckstack 5000; return 1]]", ), ], ], ), ], line: 1424, }, ], ], line: 1424, column: 10, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [], ), ], line: 1424, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L", ), ], line: 1426, }, ], ], ), ], line: 1425, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 1427, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 1426, }, ], end: 8717, }, ), DoBlock( CodeBlock { start: 8718, code: [ Variable { names: [ ( "L", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1431, }, ], ], line: 1431, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1431, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L", ), ], line: 1433, }, ], ], ), ], line: 1432, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "alloccount", ), Call( [], ), ], line: 1433, }, ], end: 8744, }, ), DoBlock( CodeBlock { start: 8745, code: [ Variable { names: [ ( "L", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 1438, }, ], ], line: 1438, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L", ), ], line: 1439, }, ], ], ), ], line: 1438, }, Variable { names: [ ( "res", false, ), ], values: [ [ Expr( [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L", ), ], line: 1440, }, ], [ MultilineString( "[[\n _ENV = require\"_G\"\n local T = require\"T\"\n local a = {}\n for i = 1, 1000 do a[i] = 'i' .. i end -- grow string table\n local stsize, stuse = T.querystr()\n assert(stuse > 1000)\n local function foo (n)\n if n > 0 then foo(n - 1) end\n end\n foo(180) -- grow stack\n local _, stksize = T.stacklevel()\n assert(stksize > 180)\n a = nil\n T.alloccount(0)\n collectgarbage()\n T.alloccount()\n -- stack and string table could not be reallocated,\n -- so they kept their sizes (without errors)\n assert(select(2, T.stacklevel()) == stksize)\n assert(T.querystr() == stsize)\n return 'ok'\n ]]", ), ], ], ), ], line: 1440, }, ], ), ], ], line: 1462, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 1463, }, Operator( ( "==", true, ), ), Symbol( "'ok'", ), ], ], ), ], line: 1462, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L", ), ], line: 1464, }, ], ], ), ], line: 1463, }, ], end: 8785, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 1465, }, Function { local: true, name: [ Symbol( "gsub", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 8797, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 1471, }, Ident { expr: [ Symbol( "b", ), ], line: 1471, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gsub 2 3 4; gettop; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 1471, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 1471, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 1471, }, ], ], ), ], line: 1471, }, ], ], line: 1471, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 1472, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 1471, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 1473, }, ], ], ), ), ], end: 8822, }, line: 1474, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 1476, }, Operator( ( "==", true, ), ), Symbol( "\"alo//alo//uhuh//\"", ), ], ], ), ], line: 1474, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 1477, }, Operator( ( "==", true, ), ), Symbol( "\"//.//.uhuh.\"", ), ], ], ), ], line: 1476, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 1478, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 1477, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"/.\"", ), ], ], ), ], line: 1479, }, Operator( ( "==", true, ), ), Symbol( "\"/././.\"", ), ], ], ), ], line: 1478, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\"...\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 1480, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 1479, }, 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: 1484, }, ], ], line: 1484, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1485, }, ], ], ), ], line: 1485, }, Operator( ( "==", true, ), ), Symbol( "\"table\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 1485, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1485, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1484, }, Variable { names: [ ( "d", false, ), ( "res", false, ), ( "top", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu; gettop; return 3\"", ), ], ], ), ], line: 1486, }, ], ], line: 1486, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1487, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1487, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 1487, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1487, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1486, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 1487, }, Ident { expr: [ Symbol( "res", ), ], line: 1488, }, Ident { expr: [ Symbol( "top", ), ], line: 1488, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu1; gettop; return 3\"", ), ], ], ), ], line: 1488, }, ], ], line: 1488, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1489, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1489, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 1489, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1489, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 1488, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 1489, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1491, }, ], ], line: 1491, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 1491, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 1492, }, ], ], line: 1492, column: 9, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring xuxu; gettable R; setmetatable 2\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 1493, }, ], ], ), ], line: 1492, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 1494, }, ], ], ), ], line: 1494, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1494, }, ], ], ), ], line: 1493, }, 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: 1501, }, ], ], ), ], line: 1498, }, ], ], line: 1501, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res1", ), ], line: 1502, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1502, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1502, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1501, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 1502, }, Ident { expr: [ Symbol( "res2", ), ], line: 1505, }, Ident { expr: [ Symbol( "top", ), ], line: 1505, }, ], 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: 1508, }, ], ], ), ], line: 1505, }, ], ], line: 1508, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 1509, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1509, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1509, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1508, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 1509, }, Ident { expr: [ Symbol( "res2", ), ], line: 1512, }, Ident { expr: [ Symbol( "top", ), ], line: 1512, }, ], 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: 1515, }, ], ], ), ], line: 1512, }, ], ], line: 1515, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 1516, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1516, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1516, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1515, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 1516, }, Ident { expr: [ Symbol( "res2", ), ], line: 1519, }, Ident { expr: [ Symbol( "top", ), ], line: 1519, }, ], 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: 1522, }, ], ], ), ], line: 1519, }, ], ], line: 1522, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 1523, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 1523, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 1523, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 1522, }, DoBlock( CodeBlock { start: 9104, code: [ Variable { names: [ ( "r", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getregistry", ), Call( [], ), ], line: 1527, }, ], ], line: 1527, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 1528, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1528, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu1", ), ], line: 1528, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1528, }, ], ], ), ], line: 1527, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 1528, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1529, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu1", ), ], line: 1529, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1529, column: 11, }, ], end: 9138, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 1530, }, ]