--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/api.lua --- [ IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 2, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 5, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 3, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 3, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\a\\n >>> testC not active: skipping API tests <<<\\n\\a'", ), ], ], ), ], line: 3, }, Return( None, ), ], end: 15, }, next: None, line: 5, column: 1, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 7, }, ], ], line: 9, column: 0, }, Variable { names: [ ( "pack", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), ], line: 9, }, ], ], line: 12, column: 0, }, Function { local: false, name: [ Symbol( "tcheck", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 33, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "n", ), ], line: 13, }, Operator( ( "==", true, ), ), Expr( [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "n", ), ], line: 13, }, Operator( ( "or", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t2", ), ], line: 13, }, ], ), Ident { expr: [], line: 13, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 13, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "n", ), ], line: 14, }, ], step: None, code: CodeBlock { start: 26, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 14, }, ], ), Symbol( "]", ), ], line: 14, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 14, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 14, }, ], ], ), ], line: 14, }, ], end: 41, }, line: 14, column: 24, }, ], end: 75, }, line: 15, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing C API'", ), ], ], ), ], line: 15, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 18, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushvalue R; return 1\"", ), ], ], ), ], line: 20, }, ], ], line: 20, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 21, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getregistry", ), Call( [], ), ], line: 21, }, ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex -1; return 1\"", ), ], ], ), ], line: 25, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 5; absindex -5; return 1\"", ), ], ], ), ], line: 26, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex 1; return 1\"", ), ], ], ), ], line: 27, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 10; absindex R; return 1\"", ), ], ], ), ], line: 28, }, Operator( ( "<", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 27, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 28, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "d2s", ), Call( [ [ Symbol( "12458954321123", ), ], ], ), ], line: 31, }, ], ], line: 31, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, ], ], ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "s2d", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, ], ], ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "12458954321123", ), ], ], ), ], line: 32, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, Ident { expr: [ Symbol( "b", ), ], line: 35, }, Ident { expr: [ Symbol( "c", ), ], line: 35, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 35, }, ], ], line: 35, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 36, }, ], ], ), ], line: 35, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 36, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "\"pushnum 1; pushnum 2; pushnum 3; return 2\"", ), ], ], ), ], line: 38, }, ], ], line: 38, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 38, }, Ident { expr: [ Symbol( "b", ), ], line: 39, }, Ident { expr: [ Symbol( "c", ), ], line: 39, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 39, }, ], ], line: 39, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 40, }, ], ], ), ], line: 39, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 40, }, Ident { expr: [ Symbol( "b", ), ], line: 43, }, Ident { expr: [ Symbol( "c", ), ], line: 43, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushbool 1; pushbool 2; pushbool 0; return 3\"", ), ], ], ), ], line: 43, }, ], ], line: 43, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 44, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 44, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 43, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 44, }, Ident { expr: [ Symbol( "b", ), ], line: 45, }, Ident { expr: [ Symbol( "c", ), ], line: 45, }, ], 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: 45, }, ], ], line: 46, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 46, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 47, }, Ident { expr: [ Symbol( "b", ), ], line: 50, }, Ident { expr: [ Symbol( "c", ), ], line: 50, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettop; return 2\"", ), ], [ Symbol( "10", ), ], [ Symbol( "20", ), ], [ Symbol( "30", ), ], [ Symbol( "40", ), ], ], ), ], line: 50, }, ], ], line: 50, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 51, }, Operator( ( "==", true, ), ), Symbol( "40", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 51, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "c", ), ], line: 51, }, ], ], ), ], line: 50, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settop 5; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 53, }, ], ], ), ], line: 53, }, ], ], line: 53, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 54, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 54, column: 13, }, ], ], ), ], line: 53, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 54, }, ], 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: 56, }, ], ], ), ], line: 56, }, ], ], line: 56, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "n", ), ], line: 57, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 57, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "10", ), ], ), Symbol( "]", ), ], line: 57, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 56, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 57, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"remove -2; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 59, }, ], ], ), ], line: 59, }, ], ], line: 59, column: 17, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 60, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 60, column: 13, }, ], ], ), ], line: 59, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 60, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert -1; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 62, }, ], ], ), ], line: 62, }, ], ], line: 62, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 63, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 63, column: 13, }, ], ], ), ], line: 62, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 63, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert 3; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 65, }, ], ], ), ], line: 65, }, ], ], line: 65, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 66, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 66, column: 17, }, ], ], ), ], line: 65, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 66, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace 2; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 68, }, ], ], ), ], line: 68, }, ], ], line: 68, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 69, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 69, column: 15, }, ], ], ), ], line: 68, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 69, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"replace -2; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 71, }, ], ], ), ], line: 71, }, ], ], line: 71, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 72, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 72, column: 15, }, ], ], ), ], line: 71, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 72, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"remove 3; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 74, }, ], ], ), ], line: 74, }, ], ], line: 74, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 75, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 75, column: 15, }, ], ], ), ], line: 74, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 75, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"copy 3 4; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 77, }, ], ], ), ], line: 77, }, ], ], line: 77, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 78, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 78, column: 17, }, ], ], ), ], line: 77, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 78, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"copy -3 -1; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 80, }, ], ], ), ], line: 80, }, ], ], line: 80, column: 19, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 81, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 81, column: 17, }, ], ], ), ], line: 80, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 81, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"insert 3; pushvalue 3; remove 3; pushvalue 2; remove 2; \\\n insert 2; pushvalue 1; remove 1; insert 1; \\\n insert -2; pushvalue -2; remove -3; gettop; return .\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], [ Symbol( "10", ), ], [ Symbol( "40", ), ], [ Symbol( "90", ), ], ], ), ], line: 86, }, ], ], ), ], line: 86, }, ], ], line: 89, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 90, }, ], [ 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: 90, column: 23, }, ], ], ), ], line: 89, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 90, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 5; gettop; return .\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "\"joao\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 92, }, ], ], ), ], line: 92, }, ], ], line: 92, column: 21, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 93, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Symbol( "\"alo23joao12\"", ), ], ), ], line: 93, column: 11, }, ], ], ), ], line: 92, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 93, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"call 2,-1; gettop; return .\"", ), ], [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 752, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 97, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 97, }, ], ], ), ), ], end: 765, }, line: 97, column: 19, }, ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"joao\"", ), ], ], ), ], line: 96, }, ], ], ), ], line: 96, }, ], ], line: 97, column: 25, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 98, }, ], [ 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: 98, column: 21, }, ], ], ), ], line: 97, }, DoBlock( CodeBlock { start: 794, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 101, column: 5, }, ], ], line: 102, 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: 102, }, ], ), Symbol( "]", ), ], line: 102, }, ], values: [ [ Symbol( "true", ), ], ], line: 102, column: 6, }, ], end: 19, }, line: 102, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "999", ), ], ), Symbol( "]", ), ], line: 102, }, ], values: [ [ Symbol( "10", ), ], ], line: 103, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[pcall 1 -1; pop 1; tostring -1; return 1]]", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), ], line: 103, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 104, }, ], ], ), ], line: 103, }, ], ], line: 104, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 105, }, Operator( ( "==", true, ), ), Symbol( "\"10\"", ), ], ], ), ], line: 104, }, ], end: 842, }, ), Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 106, }, ], values: [ [ Symbol( "14", ), ], ], line: 110, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "b", ), ], line: 110, }, ], values: [ [ Symbol( "\"a31\"", ), ], ], line: 111, 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 gettop;\n return .\n]]", ), ], ], ), ], line: 111, }, ], ), ], line: 118, column: 2, }, ], ], line: 118, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "14", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "\"a31\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "\"a31\"", ), ], ], ), ], line: 118, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 20; arith /; return 1\"", ), ], ], ), ], line: 123, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 119, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 20; arith -; return 1\"", ), ], ], ), ], line: 124, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 123, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum -20; arith *; return 1\"", ), ], ], ), ], line: 125, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "200", ), ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushnum 3; arith ^; return 1\"", ), ], ], ), ], line: 126, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushnum 10; pushstring 20; arith /; return 1\"", ), ], ], ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "0.5", ), ], ], ), ], line: 126, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushnum 20; arith -; return 1\"", ), ], ], ), ], line: 128, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 127, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushstring -20; arith *; return 1\"", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "200", ), ], ], ), ], line: 128, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring 10; pushstring 3; arith ^; return 1\"", ), ], ], ), ], line: 130, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 129, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, Ident { expr: [ Symbol( "b", ), ], line: 131, }, Ident { expr: [ Symbol( "c", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[pushnum 1;\n pushstring 10; arith _;\n pushstring 5; return 3]]", ), ], ], ), ], line: 131, }, ], ], line: 133, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 134, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "\"5\"", ), ], ], ), ], line: 133, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 134, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__add", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1021, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 135, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 135, }, ], ), ], line: 135, column: 14, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 135, }, ], ], ), ], line: 135, }, ], ], ), ), ], end: 1039, }, line: 135, column: 29, }, ], ), ( Some( [ Symbol( "__mod", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1048, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 136, }, Operator( ( "%", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 136, }, ], ), ], line: 136, column: 14, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 136, }, ], ], ), ], line: 136, }, ], ], ), ), ], end: 1066, }, line: 136, column: 26, }, ], ), ( Some( [ Symbol( "__unm", ), ], ), [ Lambda { args: [ "a", ], body: CodeBlock { start: 1073, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 137, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ), ], line: 137, column: 11, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 137, }, ], ], ), ], line: 137, }, ], ], ), ), ], end: 1088, }, line: 137, column: 21, }, ], ), ], line: 137, column: 22, }, ], ], line: 137, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 137, }, Ident { expr: [ Symbol( "b", ), ], line: 138, }, Ident { expr: [ Symbol( "c", ), ], line: 138, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 138, column: 11, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 138, }, ], ], ), ], line: 138, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "8", ), ], ), ], line: 139, column: 5, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 139, }, ], ], ), ], line: 138, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), ], line: 140, column: 6, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 140, }, ], ], ), ], line: 139, }, ], ], line: 140, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 140, }, Ident { expr: [ Symbol( "y", ), ], line: 141, }, Ident { expr: [ Symbol( "z", ), ], line: 141, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith +; return 2\"", ), ], [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 141, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 141, }, ], ], ), ], line: 141, }, ], ], line: 141, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "12", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith %; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 143, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 143, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "%", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 142, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"arith _; arith +; arith %; return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 144, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 144, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 144, }, ], ], ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "8", ), Operator( ( "%", true, ), ), Expr( [ Symbol( "4", ), Operator( ( "+", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 145, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 145, }, ], ], ), ], line: 143, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 5 1, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 152, }, ], ], ), ], line: 145, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 5 2, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 153, }, ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 3 4 1, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 154, }, ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 3 4 2, return 1\"", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 155, }, ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 5 2 1, return 1\"", ), ], [ Symbol( "4", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 156, }, ], ], ), ], line: 155, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 -3 1, return 1\"", ), ], [ Symbol( "\"4\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"3\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], ], ), ], line: 157, }, ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare -3 2 1, return 1\"", ), ], [ Symbol( "\"3\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"4\"", ), ], [ Symbol( "\"2\"", ), ], [ Symbol( "\"2\"", ), ], ], ), ], line: 158, }, ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 1 4 1, return 1\"", ), ], ], ), ], line: 161, }, ], ], ), ], line: 158, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 9 1 2, return 1\"", ), ], ], ), ], line: 162, }, ], ], ), ], line: 161, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 9 9 0, return 1\"", ), ], ], ), ], line: 163, }, ], ], ), ], line: 162, }, Variable { names: [ ( "b", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__lt", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1401, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 165, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 165, }, ], ], ), ), ], end: 1412, }, line: 165, column: 23, }, ], ), ], line: 165, column: 24, }, ], ], line: 166, column: 0, }, Variable { names: [ ( "a1", false, ), ( "a3", false, ), ( "a4", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 166, column: 12, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 166, }, ], ], ), ], line: 166, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ], line: 167, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 167, }, ], ], ), ], line: 166, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "4", ), ], ), ], line: 168, column: 5, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 168, }, ], ], ), ], line: 167, }, ], ], line: 168, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 5 1, return 1\"", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 169, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 169, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 169, }, ], ], ), ], line: 168, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 5 2, return 1\"", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 170, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 170, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 170, }, ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 5 -6 1, return 1\"", ), ], [ Ident { expr: [ Symbol( "a4", ), ], line: 171, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 171, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], ], ), ], line: 171, }, ], ], ), ], line: 170, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 171, }, Ident { expr: [ Symbol( "b", ), ], line: 172, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 5 -6 1, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 172, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 172, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 172, }, ], ], line: 172, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 172, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 173, }, Ident { expr: [ Symbol( "b", ), ], line: 174, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 5 -6 2, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 174, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a3", ), ], line: 174, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 174, }, ], ], line: 174, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 175, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 175, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 174, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 175, }, Ident { expr: [ Symbol( "b", ), ], line: 176, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 5 -6 2, return 2\"", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 176, }, ], [ Symbol( "2", ), ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "a1", ), ], line: 176, }, ], [ Symbol( "2", ), ], [ Symbol( "20", ), ], ], ), ], line: 176, }, ], ], line: 176, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 176, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "20", ), ], ), ], line: 180, column: 10, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [ "t", ], body: CodeBlock { start: 1623, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 180, }, ], ], ), ), ], end: 1628, }, line: 180, column: 23, }, ], ), ], line: 180, column: 24, }, ], ], ), ], line: 180, }, ], ], line: 180, column: 25, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, Ident { expr: [ Symbol( "b", ), ], line: 181, }, Ident { expr: [ Symbol( "c", ), ], line: 181, }, ], 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: 186, }, ], ], ), ], line: 181, }, ], ], line: 186, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 186, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 187, }, ], values: [ [ Symbol( "\"234\"", ), ], ], line: 189, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 189, }, ], values: [ [ Symbol( "20", ), ], ], line: 189, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 189, }, Ident { expr: [ Symbol( "b", ), ], line: 190, }, Ident { expr: [ Symbol( "c", ), ], line: 190, }, ], 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: 195, }, ], ], ), ], line: 190, }, ], ], line: 195, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "\"234\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "234", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 196, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 195, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "x", ), ], line: 196, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 198, }, ], ], line: 198, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 198, }, ], values: [ [ Symbol( "20", ), ], ], line: 198, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 198, }, Ident { expr: [ Symbol( "c", ), ], line: 199, }, ], 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: 203, }, ], ], ), ], line: 199, }, ], ], line: 203, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 204, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 204, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 204, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 203, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 204, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "\"u\"", ), ], ), ], line: 209, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "__concat", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1751, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 209, }, Operator( ( "..", true, ), ), Symbol( "'.'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 209, }, ], ], ), ), ], end: 1762, }, line: 209, column: 30, }, ], ), ], line: 209, column: 31, }, ], ], ), ], line: 209, }, ], ], line: 209, column: 32, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 209, }, Ident { expr: [ Symbol( "y", ), ], line: 210, }, ], 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: 217, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 217, }, ], ], ), ], line: 210, }, ], ], line: 217, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 218, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 218, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 218, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 218, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 217, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 0; return 1\"", ), ], ], ), ], line: 221, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 218, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"concat 1; return 1\"", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 224, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 221, }, Function { local: false, name: [ Symbol( "B", ), ], args: [ "x", ], body: CodeBlock { start: 1819, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 230, }, Operator( ( "and", true, ), ), Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 1826, }, line: 230, column: 12, }, Function { local: false, name: [ Symbol( "count", ), ], args: [ "x", "n", ], body: CodeBlock { start: 1833, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 233, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 233, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 234, 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: 244, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 244, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 245, }, ], ], ), ], line: 245, }, ], ], line: 246, 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: 246, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 246, }, ], ], ), ], line: 246, }, ], ], line: 247, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "+", true, ), ), Expr( [ Symbol( "100", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "B", ), Call( [ [ Ident { expr: [ Symbol( "h", ), ], line: 247, }, ], ], ), ], line: 247, }, ], ), Ident { expr: [], line: 247, }, ], ], ), ), ], end: 1936, }, line: 248, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 250, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 248, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 251, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 250, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "'32'", ), ], ], ), ], line: 252, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 251, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Table { data: [], line: 253, column: 6, }, ], ], ), ], line: 253, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 252, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 254, }, ], ], ), ], line: 254, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 253, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1989, code: [], end: 1990, }, line: 255, column: 8, }, ], ], ), ], line: 255, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 254, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 256, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 255, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 257, }, ], ], ), ], line: 257, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 256, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "count", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "15", ), ], ], ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 257, }, Function { local: false, name: [ Symbol( "to", ), ], args: [ "s", "x", "n", ], body: CodeBlock { start: 2034, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 264, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 264, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ], line: 265, 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: 265, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 265, }, ], ], ), ], line: 265, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 265, }, ], ], ), ], line: 265, }, ], ], ), ), ], end: 2058, }, line: 266, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Table { data: [], line: 268, column: 8, }, ], ], ), ], line: 268, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 266, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "\"alo\"", ), ], ], ), ], line: 268, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], ], ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "\"12\"", ), ], ], ), ], line: 269, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tostring\"", ), ], [ Symbol( "12", ), ], [ Symbol( "3", ), ], ], ), ], line: 271, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 270, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [], line: 272, column: 8, }, ], ], ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 271, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 273, column: 13, }, ], ], ), ], line: 273, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 272, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "\"alo\\0\\0a\"", ), ], ], ), ], line: 274, }, Operator( ( "==", true, ), ), Symbol( "6", ), ], ], ), ], line: 273, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 275, }, ], ], ), ], line: 275, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 274, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "101", ), ], ], ), ], line: 276, }, ], ], ), ], line: 276, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 275, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "124", ), ], ], ), ], line: 277, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"objsize\"", ), ], [ Symbol( "true", ), ], ], ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 277, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Table { data: [], line: 279, column: 8, }, ], ], ), ], line: 279, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 278, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"12\"", ), ], ], ), ], line: 280, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 279, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "\"s2\"", ), ], ], ), ], line: 281, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tonumber\"", ), ], [ Symbol( "1", ), ], [ Symbol( "20", ), ], ], ), ], line: 282, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "10", ), ], ], ), ], line: 283, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Symbol( "true", ), ], ], ), ], line: 284, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 283, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 285, }, ], ], ), ], line: 285, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"topointer\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), ], line: 286, }, ], ], ), ], line: 286, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 285, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Symbol( "20", ), ], ], ), ], line: 287, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 286, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 288, }, ], ], ), ], line: 288, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 287, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"func2num\"", ), ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "read", ), ], line: 289, }, ], ], ), ], line: 289, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ], line: 288, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 289, }, ], values: [ [ Ident { expr: [ Symbol( "to", ), Call( [ [ Symbol( "\"tocfunction\"", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 290, }, ], ], ), ], line: 290, }, ], ], line: 290, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 291, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 291, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 291, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "deg", ), ], line: 291, }, ], ], ), ], line: 290, }, DoBlock( CodeBlock { start: 2368, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 297, }, Variable { names: [ ( "s", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 298, }, ], [ Symbol( "\"checkstack 1000023 XXXX\"", ), ], ], ), ], line: 298, }, ], ], line: 298, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 299, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 299, }, ], [ Symbol( "\"XXXX\"", ), ], ], ), ], line: 299, }, ], ], ), ], line: 298, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 299, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"pushnil;checkstack 1 XX;\"", ), ], [ Symbol( "1000000", ), ], ], ), ], line: 300, }, ], ], line: 300, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 300, }, Ident { expr: [ Symbol( "msg", ), ], line: 301, }, ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 301, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 301, }, ], ], ), ], line: 301, }, ], ], line: 301, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "s", ), ], line: 302, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 302, }, ], [ Symbol( "\"XX\"", ), ], ], ), ], line: 302, }, ], ], ), ], line: 301, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 302, }, ], end: 2440, }, ), Variable { names: [ ( "prog", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"checkstack 30000 msg\"", ), ], ), ( None, [ Symbol( "\"newtable\"", ), ], ), ], line: 306, column: 8, }, ], ], line: 307, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "12000", ), ], step: None, code: CodeBlock { start: 2455, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 308, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 308, }, ], values: [ [ Symbol( "\"pushnum \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 308, }, ], ], line: 308, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 309, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 308, }, ], values: [ [ Symbol( "\"pushnum \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 309, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], line: 309, column: 13, }, ], end: 2480, }, line: 310, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 312, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 310, }, ], values: [ [ Symbol( "\"rawgeti R 2\"", ), ], ], line: 312, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 313, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 312, }, ], values: [ [ Symbol( "\"insert \"", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Symbol( "12000", ), Operator( ( "+", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 313, }, ], ], line: 315, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "12000", ), ], step: None, code: CodeBlock { start: 2514, code: [ Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 316, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 316, }, ], values: [ [ Symbol( "\"settable \"", ), Operator( ( "..", true, ), ), Operator( ( "-", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "*", true, ), ), Expr( [ Symbol( "12000", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 316, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 316, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 316, }, ], ], line: 316, column: 24, }, ], end: 2539, }, line: 317, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "prog", ), ], line: 319, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 317, }, ], values: [ [ Symbol( "\"return 2\"", ), ], ], line: 319, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 319, }, ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 321, }, ], [ Symbol( "\";\"", ), ], ], ), ], line: 321, }, ], ], line: 322, column: 0, }, Variable { names: [ ( "g", false, ), ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 322, }, ], ], ), ], line: 322, }, ], ], line: 322, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 323, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), ], line: 323, }, ], ], ), ], line: 322, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "12000", ), ], step: None, code: CodeBlock { start: 2582, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 324, }, ], ), Symbol( "]", ), ], line: 324, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 324, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 324, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 324, }, ], ), Symbol( "]", ), ], line: 324, }, ], values: [ [ Symbol( "nil", ), ], ], line: 324, column: 18, }, ], end: 2601, }, line: 324, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 325, }, ], ], ), ], line: 325, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 324, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 325, }, Ident { expr: [ Symbol( "g", ), ], line: 326, }, Ident { expr: [ Symbol( "t", ), ], line: 326, }, ], values: [ [ Symbol( "nil", ), ], ], line: 326, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 326, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ MultilineString( "[[\n loadstring 2; pcall 0,1;\n pushvalue 3; insert -2; pcall 1, 1;\n pcall 0, 0;\n return 1\n]]", ), ], [ Symbol( "\"x=150\"", ), ], [ Lambda { args: [ "a", ], body: CodeBlock { start: 2631, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 335, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 335, }, Return( Some( [ [ Symbol( "3", ), ], ], ), ), ], end: 2641, }, line: 335, column: 18, }, ], ], ), ], line: 330, }, ], ], line: 335, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 337, }, ], ], ), ], line: 337, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 337, }, Operator( ( "==", true, ), ), Symbol( "150", ), ], ], ), ], line: 335, }, Function { local: false, name: [ Symbol( "check3", ), ], args: [ "p", "...", ], body: CodeBlock { start: 2662, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 340, column: 6, }, ], ], line: 340, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 341, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 340, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 342, }, ], [ Ident { expr: [ Symbol( "p", ), ], line: 342, }, ], ], ), ], line: 342, }, ], ], ), ], line: 341, }, ], end: 2690, }, line: 343, column: 1, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\":1:\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadstring 2; gettop; return .\"", ), ], [ Symbol( "\"x=\"", ), ], ], ), ], line: 344, }, ], ], ), ], line: 343, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"cannot read\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; gettop; return .\"", ), ], [ Symbol( "\".\"", ), ], ], ), ], line: 345, }, ], ], ), ], line: 344, }, Ident { expr: [ Symbol( "check3", ), Call( [ [ Symbol( "\"cannot open xxxx\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"loadfile 2; gettop; return .\"", ), ], [ Symbol( "\"xxxx\"", ), ], ], ), ], line: 346, }, ], ], ), ], line: 345, }, Function { local: false, name: [ Symbol( "checkerrnopro", ), ], args: [ "code", "msg", ], body: CodeBlock { start: 2736, code: [ Alter { names: [ Ident { expr: [ Symbol( "L", ), ], line: 350, }, ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "create", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 9, code: [], end: 10, }, line: 350, column: 10, }, ], ], ), ], line: 350, }, ], ], line: 351, column: 0, }, Variable { names: [ ( "stt", false, ), ( "err", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), ], line: 351, }, ], [ Ident { expr: [ Symbol( "code", ), ], line: 351, }, ], ], ), ], line: 351, }, ], ], line: 351, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "stt", ), ], line: 352, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "err", ), ], line: 352, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 352, }, ], ], ), ], line: 352, }, ], ], ), ], line: 351, }, ], end: 2775, }, line: 353, column: 1, }, Ident { expr: [ Symbol( "checkerrnopro", ), Call( [ [ Symbol( "\"pushnum 3; call 0 0\"", ), ], [ Symbol( "\"attempt to call\"", ), ], ], ), ], line: 353, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 2785, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 356, }, ], end: 2789, }, line: 356, column: 8, }, Ident { expr: [ Symbol( "checkerrnopro", ), Call( [ [ Symbol( "\"getglobal 'f'; call 0 0;\"", ), ], [ Symbol( "\"stack overflow\"", ), ], ], ), ], line: 356, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 357, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ( Some( [ Symbol( "y", ), ], ), [ Symbol( "12", ), ], ), ], line: 362, column: 11, }, ], ], line: 362, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 362, }, Ident { expr: [ Symbol( "y", ), ], line: 363, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; pushvalue 4; gettable 2; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 363, }, ], [ Symbol( "3", ), ], [ Symbol( "\"y\"", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 363, }, ], ], line: 364, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 365, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 365, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 364, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 366, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "15", ), ], ], ), ], line: 365, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 367, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 366, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 368, }, ], ), Symbol( "]", ), ], line: 367, }, ], values: [ [ Ident { expr: [ Symbol( "print", ), ], line: 368, }, ], ], line: 368, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 368, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 369, }, ], ], ), ], line: 369, }, ], ], line: 369, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 370, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 370, }, ], ], ), ], line: 369, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 371, }, ], [ Symbol( "\"x\"", ), ], ], ), ], line: 370, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 372, }, ], ), Symbol( "]", ), ], line: 372, }, Operator( ( "==", true, ), ), Symbol( "\"x\"", ), ], ], ), ], line: 371, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 372, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "p", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 374, }, ], ), ], line: 374, column: 9, }, ], [ Table { data: [], line: 374, column: 12, }, ], ], ), ], line: 374, }, ], ], line: 374, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 375, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 374, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 2927, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "p", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 375, }, ], ), Symbol( "]", ), ], line: 375, }, ], ], ), ), ], end: 2935, }, line: 375, column: 21, }, ], ], line: 375, column: 21, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 375, }, Ident { expr: [ Symbol( "x", ), ], line: 376, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 3, return 2\"", ), ], [ Symbol( "4", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 376, }, ], [ Symbol( "20", ), ], [ Symbol( "35", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 376, }, ], ], line: 376, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 377, }, Operator( ( "==", true, ), ), Symbol( "15", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 377, }, Operator( ( "==", true, ), ), Symbol( "35", ), ], ], ), ], line: 376, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 378, }, ], ], ), Symbol( ".", ), Symbol( "__index", ), ], line: 377, }, ], values: [ [ Lambda { args: [ "t", "i", ], body: CodeBlock { start: 2978, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 378, }, ], ), Symbol( "]", ), ], line: 378, }, ], ], ), ), ], end: 2984, }, line: 378, column: 19, }, ], ], line: 378, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 379, }, ], ], ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 378, }, ], values: [ [ Lambda { args: [ "t", "i", "v", ], body: CodeBlock { start: 2999, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 379, }, ], ), Symbol( "]", ), ], line: 379, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 379, }, ], ], line: 379, column: 6, }, ], end: 3006, }, line: 379, column: 22, }, ], ], line: 379, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 379, }, ], 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: 380, }, ], ], ), ], line: 380, }, ], ], line: 380, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 381, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 380, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 381, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable -5, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 382, }, ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "\"x\"", ), ], [ Symbol( "16", ), ], ], ), ], line: 382, }, ], ], line: 382, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 383, }, Operator( ( "==", true, ), ), Symbol( "16", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 383, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 382, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 384, }, ], ), Symbol( "]", ), ], line: 383, }, ], values: [ [ Symbol( "'xuxu'", ), ], ], line: 384, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 384, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gettable 2, return 1\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 385, }, ], ], ), ], line: 385, }, ], ], line: 385, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 386, }, Operator( ( "==", true, ), ), Symbol( "'xuxu'", ), ], ], ), ], line: 385, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"settable 2\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 387, }, ], [ Symbol( "19", ), ], ], ), ], line: 386, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 388, }, ], ), Symbol( "]", ), ], line: 388, }, Operator( ( "==", true, ), ), Symbol( "19", ), ], ], ), ], line: 387, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 388, }, ], values: [ [ Table { data: [], line: 391, column: 4, }, ], ], line: 391, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 391, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; gettop; return .\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 392, }, ], [ Symbol( "nil", ), ], ], ), ], line: 392, }, ], ], ), ], line: 392, }, ], ], line: 392, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 393, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 393, }, ], ), ], line: 393, column: 11, }, ], ], ), ], line: 392, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 393, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "3", ), ], ), ], line: 394, column: 7, }, ], ], line: 394, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 394, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; gettop; return .\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 395, }, ], [ Symbol( "nil", ), ], ], ), ], line: 395, }, ], ], ), ], line: 395, }, ], ], line: 395, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 396, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "3", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 396, }, ], ), ( None, [ Symbol( "'a'", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 396, column: 15, }, ], ], ), ], line: 395, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 396, }, ], values: [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"next; pop 1; next; gettop; return .\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 397, }, ], [ Symbol( "nil", ), ], ], ), ], line: 397, }, ], ], ), ], line: 397, }, ], ], line: 397, column: 15, }, Ident { expr: [ Symbol( "tcheck", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 398, }, ], [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 398, }, ], ), ], line: 398, column: 11, }, ], ], ), ], line: 397, }, DoBlock( CodeBlock { start: 3198, code: [ Variable { names: [ ( "A", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 405, }, ], ], line: 405, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 405, }, Ident { expr: [ Symbol( "b", ), ], line: 406, }, Ident { expr: [ Symbol( "c", ), ], line: 406, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U0; pushvalue U1; pushvalue U2; return 3]]", ), ], ], ), ], line: 406, }, ], ], line: 406, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 407, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 407, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 407, }, ], ], ), ], line: 407, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 406, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 407, }, Ident { expr: [ Symbol( "b", ), ], line: 408, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[tostring U3; tonumber U4; return 2]]", ), ], ], ), ], line: 408, }, ], ], line: 408, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 409, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 409, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 408, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushnum 100; pushnum 200; replace U2; replace U1]]", ), ], ], ), ], line: 409, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 410, }, Ident { expr: [ Symbol( "c", ), ], line: 411, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 411, }, ], ], line: 411, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 412, }, Operator( ( "==", true, ), ), Symbol( "100", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 412, }, Operator( ( "==", true, ), ), Symbol( "200", ), ], ], ), ], line: 411, }, Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[replace U2; replace U1]]", ), ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 413, column: 9, }, ], [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "2", ), ], ), ], line: 413, column: 15, }, ], ], ), ], line: 412, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 413, }, Ident { expr: [ Symbol( "c", ), ], line: 414, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ MultilineString( "[[pushvalue U1; pushvalue U2; return 2]]", ), ], ], ), ], line: 414, }, ], ], line: 414, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 415, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( ".", ), Symbol( "x", ), ], line: 415, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 414, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkmemory", ), Call( [], ), ], line: 415, }, ], end: 3316, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[isnull U1; return 1]]", ), ], ], ), ], line: 421, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 417, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[isnull U100; return 1]]", ), ], ], ), ], line: 422, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 421, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[pushvalue U1; return 1]]", ), ], ], ), ], line: 423, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 422, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "[[ pushnum 10; pushnum 20; pushcclosure 2; return 1]]", ), ], ], ), ], line: 425, }, ], ], line: 425, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 426, }, ], [ Symbol( "1", ), ], ], ), ], line: 426, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 427, }, ], [ Symbol( "2", ), ], ], ), ], line: 426, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 428, }, ], [ Symbol( "3", ), ], ], ), ], line: 427, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 425, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 429, }, ], [ Symbol( "2", ), ], [ Symbol( "\"xuxu\"", ), ], ], ), ], line: 428, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "upvalue", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 430, }, ], [ Symbol( "2", ), ], ], ), ], line: 430, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 429, }, DoBlock( CodeBlock { start: 3409, 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: 435, }, Operator( ( "..", true, ), ), Symbol( "\"pushcclosure 255; return 1\"", ), ], ], line: 437, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 437, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 438, }, ], ], ), ], line: 438, }, ], ], line: 439, 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: 440, }, ], ], ), ], line: 440, }, ], ], ), ], line: 440, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 440, }, ], end: 47, }, line: 441, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), Call( [ [ Symbol( "\"isnull U256; return 1\"", ), ], ], ), ], line: 442, }, ], ], ), ], line: 441, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "A", ), Call( [ [ Symbol( "\"isnil U256; return 1\"", ), ], ], ), ], line: 443, }, ], ], ), ], line: 442, }, ], end: 3472, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 449, }, ], [ Symbol( "3", ), ], [ Table { data: [], line: 449, column: 13, }, ], ], ), ], line: 449, }, ], ], ), ], line: 444, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 450, }, ], [ Symbol( "nil", ), ], [ Table { data: [], line: 450, column: 13, }, ], ], ), ], line: 450, }, ], ], ), ], line: 449, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), ], line: 451, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 451, }, ], [ Table { data: [], line: 451, column: 18, }, ], ], ), ], line: 451, }, ], ], ), ], line: 450, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 453, }, ], ], line: 454, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 454, column: 5, }, ], ], line: 454, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 455, }, ], ], ), ], line: 455, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 454, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 456, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 456, }, ], ], ), ], line: 456, }, ], ], ), ], line: 455, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 457, }, ], ], ), ], line: 457, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 457, }, ], ], ), ], line: 456, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 458, }, ], [ Symbol( "nil", ), ], ], ), ], line: 458, }, ], ], ), ], line: 457, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 459, }, ], ], ), ], line: 459, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 458, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 461, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 459, }, Variable { names: [ ( "i", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 468, column: 8, }, ], ], ), ], line: 468, }, ], ], line: 468, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 469, }, ], ], ), ], line: 468, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 470, column: 7, }, ], ], ), ], line: 470, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 470, }, ], ], ), ], line: 469, }, Alter { names: [ Ident { expr: [ Symbol( "Arr", ), ], line: 470, }, ], values: [ [ Table { data: [], line: 472, column: 4, }, ], ], line: 472, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Lim", ), ], line: 472, }, ], values: [ [ Symbol( "100", ), ], ], line: 474, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 474, }, ], step: None, code: CodeBlock { start: 3640, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 475, }, ], ), Symbol( "]", ), ], line: 475, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 475, column: 11, }, ], ], ), ], line: 475, }, ], ], line: 475, column: 12, }, ], end: 3653, }, line: 476, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 478, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 478, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 476, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 478, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 479, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 481, }, ], step: None, code: CodeBlock { start: 3697, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 482, }, ], ), Symbol( "]", ), ], line: 482, }, ], ], ), ], line: 482, }, ], end: 3707, }, line: 483, column: 1, }, Function { local: false, name: [ Symbol( "printlocks", ), ], args: [], body: CodeBlock { start: 3711, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "makeCfunc", ), Call( [ [ Symbol( "\"gettable R; return 1\"", ), ], ], ), ], line: 486, }, ], ], line: 487, column: 0, }, Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"n\"", ), ], ], ), ], line: 487, }, ], ], line: 487, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"n\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 488, }, ], ], ), ], line: 487, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 489, }, ], step: None, code: CodeBlock { start: 29, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 490, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 490, }, ], ], ), ], line: 490, }, ], ], ), ], line: 490, }, ], end: 39, }, line: 491, column: 1, }, ], end: 3751, }, line: 492, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 495, }, ], step: None, code: CodeBlock { start: 3758, code: [ Alter { names: [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 496, }, ], ), Symbol( "]", ), ], line: 496, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 496, column: 11, }, ], ], ), ], line: 496, }, ], ], line: 496, column: 12, }, ], end: 3771, }, line: 497, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 499, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 3780, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 500, }, ], ), Symbol( "]", ), ], line: 500, }, ], ], ), ], line: 500, }, ], end: 3790, }, line: 501, 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: 503, }, ], ], ), ], line: 503, }, ], ], ), ], line: 503, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 501, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 506, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 503, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 506, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Table { data: [], line: 509, column: 8, }, ], ], ), ], line: 509, }, ], ], line: 509, column: 9, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 509, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 513, }, ], ], ), ], line: 513, }, ], ], ), ], line: 513, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 511, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 513, }, ], values: [ [ Table { data: [], line: 517, column: 4, }, ], ], line: 517, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 517, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Symbol( "0", ), ], ), ], line: 518, column: 7, }, ], ], line: 518, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 518, }, ], values: [ [ Symbol( "nil", ), ], ], line: 519, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 519, }, ], values: [ [ Symbol( "nil", ), ], ], line: 520, column: 0, }, Variable { names: [ ( "F", false, ), ], values: [], line: 520, column: 2, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 520, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 3871, code: [ Variable { names: [ ( "udval", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 522, }, ], ], ), ], line: 522, }, ], ], line: 522, column: 9, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), ], line: 523, }, ], [ Ident { expr: [ Symbol( "udval", ), ], line: 523, }, ], ], ), ], line: 522, }, Variable { names: [ ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 524, }, ], ], line: 524, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 524, }, ], values: [ [ Symbol( "nil", ), ], ], line: 525, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 526, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 526, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 526, }, ], ], ), ], line: 525, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"table.insert({}, {})\"", ), ], ], ), ], line: 527, }, ], ], ), Call( [], ), ], line: 526, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 527, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 529, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 529, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "F", ), ], line: 529, }, ], ], ), ], line: 528, }, Variable { names: [ ( "dummy", false, ), ], values: [ [ Table { data: [], line: 530, column: 5, }, ], ], line: 531, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 531, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 77, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 532, }, ], ], ), ], line: 532, }, Operator( ( "==", true, ), ), Symbol( "\"userdata\"", ), ], ], ), ], line: 532, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 533, }, ], ], ), ], line: 533, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "B", ), ], line: 533, }, ], ], ), ], line: 532, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 534, }, ], ], ), ], line: 533, }, ], end: 104, }, next: None, line: 535, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 535, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 536, }, ], ], line: 536, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 536, }, ], values: [ [ Ident { expr: [ Symbol( "udval", ), ], line: 537, }, ], ], line: 538, column: 0, }, Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 3988, }, line: 539, column: 1, }, ], ], line: 539, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "__gc", ), ], line: 539, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), ], line: 540, }, ], ], line: 543, column: 0, }, DoBlock( CodeBlock { start: 3994, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 544, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 544, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 546, }, ], ], line: 546, column: 8, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "5001", ), ], ], ), ], line: 547, }, ], ], line: 547, 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: 548, }, ], ], ), ], line: 548, }, Operator( ( "==", true, ), ), Symbol( "5001", ), ], ], ), ], line: 547, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 549, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 549, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], ], ), ], line: 548, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 549, }, ], values: [ [ Symbol( "nil", ), ], ], line: 550, column: 3, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 550, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 552, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 552, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 551, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 552, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 554, }, ], ], line: 554, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 554, }, 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: 556, }, ], end: 91, }, line: 556, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 557, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 557, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 556, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 557, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 559, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 559, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 558, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 559, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 561, }, ], ], line: 561, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 561, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 562, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 563, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 137, code: [], end: 138, }, line: 564, column: 9, }, ], ), ], line: 564, column: 10, }, ], ], line: 565, 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: 565, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 565, }, ], ], ), ], line: 565, }, ], end: 160, }, line: 565, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 566, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 566, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 565, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 566, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 568, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 568, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 567, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 568, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 570, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 570, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 569, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 570, }, ], end: 4198, }, ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 572, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 575, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 578, }, ], ], line: 578, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 578, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 578, }, ], ], ), ], line: 578, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 578, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 578, }, ], ], ), ], line: 578, }, ], ], line: 578, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 578, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 579, }, ], ], line: 579, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 579, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 579, }, ], ], ), ], line: 579, }, Alter { names: [ Ident { expr: [ Symbol( "nb", ), ], line: 579, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 579, }, ], ], ), ], line: 579, }, ], ], line: 579, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 579, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 580, }, ], ], line: 580, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 580, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 580, }, ], ], ), ], line: 580, }, Alter { names: [ Ident { expr: [ Symbol( "nc", ), ], line: 580, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 580, }, ], ], ), ], line: 580, }, ], ], line: 580, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 580, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 583, }, ], ], line: 583, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 583, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 584, }, ], ], line: 584, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), ], line: 586, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 586, }, ], ], ), ], line: 586, }, ], ], ), ], line: 584, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "input", ), ], line: 587, }, ], [ Ident { expr: [ Symbol( "x", ), ], line: 587, }, ], ], ), ], line: 587, }, ], ], ), ], line: 586, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 589, }, ], ], ), ], line: 589, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 589, }, ], ], ), ], line: 589, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 587, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 589, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 591, }, ], ], ), ], line: 591, }, ], ], line: 591, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "e", ), ], line: 591, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 592, }, ], ], ), ], line: 592, }, ], ], line: 592, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 592, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "ref", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 593, }, ], ], ), ], line: 593, }, ], ], line: 593, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 593, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 594, }, ], ], ), ], line: 594, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 594, }, ], ], ), ], line: 594, }, ], ), ( None, [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 594, }, ], ], ), ], line: 594, }, ], ), ], line: 594, column: 24, }, ], ], line: 594, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 595, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 595, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 595, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 595, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 595, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 595, }, ], ], ), ], line: 594, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 595, }, ], values: [ [ Symbol( "nil", ), ], ], line: 597, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 597, }, ], values: [ [ Symbol( "nil", ), ], ], line: 597, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 597, }, ], values: [ [ Symbol( "nil", ), ], ], line: 597, column: 12, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "e", ), ], line: 598, }, ], ], ), ], line: 597, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 598, }, ], ], ), ], line: 598, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 598, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 603, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 603, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nc", ), ], line: 603, }, ], ], ), ], line: 600, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 603, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "getref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 605, }, ], ], ), ], line: 605, }, ], ], line: 605, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 606, }, ], ], ), ], line: 606, }, Operator( ( "==", true, ), ), Symbol( "'userdata'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 606, }, ], ], ), ], line: 606, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tt", ), ], line: 606, }, ], ], ), ], line: 605, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 606, }, ], values: [ [ Symbol( "nil", ), ], ], line: 607, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "b", ), ], line: 607, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 608, }, ], ], line: 608, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), ], line: 608, }, ], values: [ [ Symbol( "nil", ), ], ], line: 609, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 609, }, ], values: [ [ Symbol( "nil", ), ], ], line: 610, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 610, }, ], values: [ [ Symbol( "nil", ), ], ], line: 611, column: 3, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 612, }, ], ], ), ], line: 611, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 612, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 613, }, ], ], line: 613, column: 8, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 614, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 614, }, ], ), ], line: 614, column: 11, }, ], ], ), ], line: 613, }, Alter { names: [ Ident { expr: [ Symbol( "n5", ), ], line: 614, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "n5", ), ], line: 615, }, ], ], ), ], line: 615, }, ], ], line: 615, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 615, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 617, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 616, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 619, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n5", ), ], line: 619, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 619, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "nb", ), ], line: 619, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 619, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), ], line: 619, }, ], ], ), ], line: 617, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 619, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 621, }, Ident { expr: [ Symbol( "na", ), ], line: 624, }, ], values: [ [ Table { data: [], line: 624, column: 6, }, ], [ Table { data: [], line: 624, column: 9, }, ], ], line: 625, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "30", ), ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 4588, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 626, }, ], ), Symbol( "]", ), ], line: 626, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 626, }, ], ], line: 626, column: 11, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 627, }, ], ), Symbol( "]", ), ], line: 627, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 627, }, ], ), ], line: 627, column: 14, }, ], ], ), ], line: 626, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 628, }, ], ), Symbol( "]", ), ], line: 627, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 628, }, ], ), Symbol( "]", ), ], line: 628, }, ], ], ), ], line: 628, }, ], ], line: 628, column: 14, }, ], end: 4629, }, line: 629, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 629, }, ], values: [ [ Table { data: [], line: 630, column: 4, }, ], ], line: 630, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 630, }, ], values: [ [ Symbol( "nil", ), ], ], line: 631, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 631, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 632, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 631, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "30", ), ], step: None, code: CodeBlock { start: 4654, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 633, }, ], ), Symbol( "]", ), ], line: 633, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "na", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 633, }, ], ), Symbol( "]", ), ], line: 633, }, ], ], ), ], line: 633, }, ], end: 4667, }, line: 633, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "na", ), ], line: 633, }, ], values: [ [ Symbol( "nil", ), ], ], line: 637, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "Lim", ), ], line: 637, }, ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 4679, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "unref", ), Call( [ [ Ident { expr: [ Symbol( "Arr", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 638, }, ], ), Symbol( "]", ), ], line: 638, }, ], ], ), ], line: 638, }, ], end: 4689, }, line: 639, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 639, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "41", ), ], ], ), ], line: 641, }, ], ], line: 641, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 641, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Ident { expr: [ Symbol( "F", ), ], line: 641, }, ], ), ], line: 641, column: 20, }, ], ], ), ], line: 641, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"objsize 2; return 1\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 642, }, ], ], ), ], line: 642, }, Operator( ( "==", true, ), ), Symbol( "41", ), ], ], ), ], line: 641, }, Alter { names: [ Ident { expr: [ Symbol( "cl", ), ], line: 642, }, ], values: [ [ Table { data: [], line: 643, column: 4, }, ], ], line: 643, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 643, }, ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "x", ), ], line: 644, }, ], ), [ Symbol( "1", ), ], ), ], line: 644, column: 9, }, ], ], line: 644, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 644, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "udataval", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 645, }, ], ], ), ], line: 645, }, ], ], line: 645, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 645, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 648, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 646, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 649, }, ], ], ), ], line: 649, }, ], stop: None, initial: None, code: CodeBlock { start: 4762, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 649, }, ], ), Symbol( "]", ), ], line: 649, }, ], values: [ [ Symbol( "nil", ), ], ], line: 649, column: 6, }, ], end: 4769, }, line: 649, column: 15, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 649, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cl", ), ], line: 651, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cl", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 651, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 651, }, ], ], ), ], line: 650, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 4 0; return 1\"", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 654, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 654, }, ], [ Symbol( "20", ), ], ], ), ], line: 654, }, ], ], ), ], line: 651, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 3 2 0; return 1\"", ), ], [ Symbol( "'alo'", ), ], [ Symbol( "\"alo\"", ), ], ], ), ], line: 655, }, ], ], ), ], line: 654, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 3 0; return 1\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 656, }, ], ], ), ], line: 655, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 3 0; return 1\"", ), ], [ Table { data: [], line: 657, column: 11, }, ], [ Table { data: [], line: 657, column: 14, }, ], ], ), ], line: 657, }, ], ], ), ], line: 656, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 3 0; return 1\"", ), ], ], ), ], line: 658, }, ], ], ), ], line: 657, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 3 0; return 1\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 659, }, ], ], ), ], line: 658, }, DoBlock( CodeBlock { start: 4868, code: [ Variable { names: [ ( "map", false, ), ], values: [ [ Table { data: [], line: 663, column: 5, }, ], ], line: 664, 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: 664, }, ], ), Symbol( "]", ), ], line: 664, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 664, }, ], ), Symbol( "]", ), ], line: 664, }, ], ], ), ), ], end: 28, }, line: 664, column: 23, }, ], ), ], line: 664, column: 24, }, ], ], line: 665, 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: 666, }, ], ], line: 666, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 667, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 667, }, ], ], ), ], line: 666, }, Alter { names: [ Ident { expr: [ Symbol( "map", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "u", ), ], line: 668, }, ], ), Symbol( "]", ), ], line: 667, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 668, }, ], ], line: 669, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "u", ), ], line: 669, }, ], ], ), ), ], end: 61, }, line: 670, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 671, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 671, }, ], ], ), ], line: 670, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 672, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "11", ), ], ], ), ], line: 672, }, ], ], ), ], line: 671, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 3 0; return 1\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 673, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 673, }, ], ], ), ], line: 673, }, ], ], ), ], line: 672, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"compare 2 3 0; return 1\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 674, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "20", ), ], ], ), ], line: 674, }, ], ], ), ], line: 674, }, ], ], ), ], line: 673, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 674, }, ], values: [ [ Symbol( "nil", ), ], ], line: 675, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 676, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 676, }, ], ], ), ], line: 675, }, ], end: 5010, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 677, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "t", ), ], line: 679, }, ], values: [ [ Table { data: [], line: 684, column: 6, }, ], ], line: 684, 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: 684, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 692, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 692, }, ], values: [ [ Symbol( "1", ), ], ], line: 693, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 693, }, ], values: [ [ Symbol( "1", ), ], ], line: 694, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 694, }, ], values: [ [ Symbol( "1", ), ], ], line: 695, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 695, }, ], values: [ [ Symbol( "1", ), ], ], line: 696, column: 3, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "sethook", ), Call( [], ), ], line: 696, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 697, }, ], values: [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "t", ), ], line: 698, }, ], ], line: 698, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 699, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), ], ], ), ], line: 698, }, Alter { names: [ Ident { expr: [ Symbol( "line", ), ], line: 699, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 700, }, ], ], line: 700, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 701, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 701, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "line", ), ], line: 701, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 700, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 702, }, Operator( ( "==", true, ), ), Symbol( "\"line\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "6", ), ], ), Symbol( "]", ), ], line: 702, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "line", ), ], line: 702, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ], ), ], line: 701, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "7", ), ], ), Symbol( "]", ), ], line: 703, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 702, }, DoBlock( CodeBlock { start: 5115, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 708, column: 5, }, ], ], line: 709, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "20", ), ], step: None, code: CodeBlock { start: 12, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 710, }, ], ), Symbol( "]", ), ], line: 710, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 710, }, ], ], ), ], line: 710, }, ], ], line: 710, column: 11, }, ], end: 24, }, line: 711, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "20", ), ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 33, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 713, }, ], ), Symbol( "]", ), ], line: 713, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"error inside gc\"", ), ], ], ), ], line: 713, }, ], end: 21, }, line: 713, column: 21, }, ], ), ], line: 713, column: 22, }, ], ], ), ], line: 713, }, ], end: 57, }, line: 714, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Symbol( "20", ), ], step: Some( [ Symbol( "2", ), ], ), code: CodeBlock { start: 66, code: [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 716, }, ], ), Symbol( "]", ), ], line: 716, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"A=A+1\"", ), ], ], ), Call( [], ), ], line: 716, }, ], end: 23, }, line: 716, column: 23, }, ], ), ], line: 716, column: 24, }, ], ], ), ], line: 716, }, ], end: 92, }, line: 717, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "A", ), ], line: 717, }, ], values: [ [ Symbol( "0", ), ], ], line: 718, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 718, }, ], values: [ [ Symbol( "0", ), ], ], line: 720, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 103, code: [ Variable { names: [ ( "stat", false, ), ( "msg", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 721, }, ], ], ), ], line: 721, }, ], ], line: 722, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "stat", ), ], line: 722, }, ], body: CodeBlock { start: 12, code: [ Break, ], end: 14, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 725, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 725, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 725, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "msg", ), ], line: 726, }, ], [ Symbol( "\"__gc\"", ), ], ], ), ], line: 726, }, ], ], ), ], line: 725, }, ], end: 31, }, next: None, line: 727, column: 1, }, ), line: 727, column: 1, }, ], end: 135, }, line: 728, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 729, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 728, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "A", ), ], line: 731, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 729, }, ], end: 5263, }, ), DoBlock( CodeBlock { start: 5264, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 736, column: 5, }, ], ], line: 736, column: 6, }, Variable { names: [ ( "lim", false, ), ], values: [ [ Symbol( "30", ), ], ], line: 737, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 737, }, ], step: None, code: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 737, }, ], ), Symbol( "]", ), ], line: 737, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "pushuserdata", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 737, }, ], ], ), ], line: 737, }, ], ], line: 737, column: 11, }, ], end: 29, }, line: 737, column: 19, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 738, }, ], 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: 738, }, ], ), Symbol( "]", ), ], line: 738, }, ], ], ), ], line: 738, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 738, }, ], ], ), ], line: 738, }, ], end: 51, }, line: 738, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 739, }, ], 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: 739, }, ], ], ), ], line: 739, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 739, }, ], ), Symbol( "]", ), ], line: 739, }, ], ], ), ], line: 739, }, ], end: 73, }, line: 739, column: 22, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 740, }, ], 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: 740, }, ], ), Symbol( "]", ), ], line: 740, }, ], ), Symbol( "]", ), ], line: 740, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 740, }, ], ], line: 740, column: 9, }, ], end: 90, }, line: 740, column: 17, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 741, }, ], 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: 741, }, ], ], ), ], line: 741, }, ], ), Symbol( "]", ), ], line: 741, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 741, }, ], ], line: 741, column: 11, }, ], end: 109, }, line: 741, 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: 742, }, ], ], ), ], line: 742, }, ], ], ), ], line: 742, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 741, }, ], end: 5389, }, ), Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 748, }, ], ], ), ], line: 743, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 748, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 749, }, ], ], line: 749, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 750, }, ], ], ), ], line: 749, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 752, }, ], [ Symbol( "\"X='a'; return 'a'\"", ), ], ], ), ], line: 752, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 750, }, 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: 755, }, ], [ Symbol( "\"function f () return 'alo', 3 end; f()\"", ), ], ], ), ], line: 755, }, ], ], ), ], line: 755, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 752, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 755, }, Ident { expr: [ Symbol( "b", ), ], line: 757, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 757, }, ], [ Symbol( "\"return f()\"", ), ], ], ), ], line: 757, }, ], ], line: 757, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 758, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 758, }, Operator( ( "==", true, ), ), Symbol( "'3'", ), ], ], ), ], line: 757, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 760, }, ], [ Symbol( "\"_ERRORMESSAGE = nil\"", ), ], ], ), ], line: 758, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 760, }, Ident { expr: [ Symbol( "_", ), ], line: 762, }, Ident { expr: [ Symbol( "b", ), ], line: 762, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 762, }, ], [ Symbol( "\"return sin(1)\"", ), ], ], ), ], line: 762, }, ], ], line: 762, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 763, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 763, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 762, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 763, }, Ident { expr: [ Symbol( "b", ), ], line: 766, }, Ident { expr: [ Symbol( "c", ), ], line: 766, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 766, }, ], [ Symbol( "\"return a+\"", ), ], ], ), ], line: 766, }, ], ], line: 766, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 767, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 767, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 767, }, ], ], ), ], line: 767, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), ], ], ), ], line: 766, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 769, }, ], ], ), ], line: 767, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 769, }, Ident { expr: [ Symbol( "b", ), ], line: 770, }, Ident { expr: [ Symbol( "c", ), ], line: 770, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 770, }, ], [ 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: 770, }, ], ], line: 779, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 780, }, Operator( ( "==", true, ), ), Symbol( "\"ok\"", ), ], ], ), ], line: 779, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 782, }, ], ], ), ], line: 780, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 782, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), Call( [], ), ], line: 785, }, ], ], line: 785, column: 7, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "loadlib", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 786, }, ], ], ), ], line: 785, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 787, }, ], [ Symbol( "\"a = {}\"", ), ], ], ), ], line: 786, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 788, }, ], [ MultilineString( "[[getglobal \"a\"; pushstring \"x\"; pushnum 1;\n settable -3]]", ), ], ], ), ], line: 787, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doremote", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 790, }, ], [ Symbol( "\"return a.x\"", ), ], ], ), ], line: 790, }, Operator( ( "==", true, ), ), Symbol( "\"1\"", ), ], ], ), ], line: 789, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "L1", ), ], line: 792, }, ], ], ), ], line: 790, }, Alter { names: [ Ident { expr: [ Symbol( "L1", ), ], line: 792, }, ], values: [ [ Symbol( "nil", ), ], ], line: 794, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 794, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), ], line: 801, }, ], [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "32", ), Operator( ( "-", true, ), ), Symbol( "4", ), ], ], ), ], line: 801, }, ], ], ), ], line: 796, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 801, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 803, }, Operator( ( "+", true, ), ), Symbol( "5000", ), ], ], ), ], line: 802, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"local a={}; for i=1,100000 do a[i]=i end\"", ), ], ], ), ], line: 804, }, ], ], ), ], line: 804, }, ], ], ), ], line: 803, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "1000000000", ), ], ], ), ], line: 804, }, Function { local: false, name: [ Symbol( "testamem", ), ], args: [ "s", "f", ], body: CodeBlock { start: 5667, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 811, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 811, }, Variable { names: [ ( "M", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 812, }, ], ], line: 813, column: 0, }, Variable { names: [ ( "oldM", false, ), ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 813, }, ], ], line: 814, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], ], line: 815, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "M", ), ], line: 816, }, ], values: [ [ Ident { expr: [ Symbol( "M", ), ], line: 816, }, Operator( ( "+", true, ), ), Symbol( "7", ), ], ], line: 816, column: 5, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "M", ), ], line: 817, }, ], ], ), ], line: 816, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 817, }, Ident { expr: [ Symbol( "b", ), ], line: 818, }, ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 818, }, ], ], ), ], line: 818, }, ], ], line: 818, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "1000000000", ), ], ], ), ], line: 818, }, IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 820, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 820, }, ], body: CodeBlock { start: 30, code: [ Break, ], end: 32, }, next: None, line: 820, column: 7, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 820, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 822, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 823, }, ], [ Symbol( "\"memory\"", ), ], ], ), ], line: 823, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 823, }, ], [ Symbol( "\"overflow\"", ), ], ], ), ], line: 823, }, ], ), Ident { expr: [], line: 823, }, ], body: CodeBlock { start: 60, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 824, }, ], [ Symbol( "0", ), ], ], ), ], line: 824, }, ], end: 67, }, next: None, line: 825, column: 1, }, ], end: 96, }, line: 826, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\nlimit for \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 827, }, Operator( ( "..", true, ), ), Symbol( "\": \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "M", ), ], line: 827, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "oldM", ), ], line: 827, }, ], ], ), ], line: 826, }, Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 828, }, ], ], ), ), ], end: 5778, }, line: 829, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 829, }, ], values: [ [ Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"state creation\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newstate", ), ], line: 834, }, ], ], ), ], line: 834, }, ], ], line: 834, column: 10, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "closestate", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 835, }, ], ], ), ], line: 834, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 835, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"rawgeti R 1; return 1\"", ), ], ], ), ], line: 841, }, ], ], line: 841, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "mt", ), ], line: 842, }, ], ], ), ], line: 842, }, Operator( ( "==", true, ), ), Symbol( "\"thread\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "running", ), Call( [], ), ], line: 842, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 842, }, ], ], ), ], line: 841, }, Function { local: false, name: [ Symbol( "expand", ), ], args: [ "n", "s", ], body: CodeBlock { start: 5827, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 847, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "\"\"", ), ], ], ), ), ], end: 8, }, next: None, line: 847, column: 8, }, Variable { names: [ ( "e", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "\"=\"", ), ], [ Ident { expr: [ Symbol( "n", ), ], line: 848, }, ], ], ), ], line: 848, }, ], ], line: 849, 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: 849, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 850, }, ], [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 850, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "s", ), ], line: 850, }, ], ], ), ], line: 850, }, ], [ Ident { expr: [ Symbol( "e", ), ], line: 850, }, ], ], ), ], line: 849, }, ], ], ), ), ], end: 5869, }, line: 851, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "G", ), ], line: 851, }, ], values: [ [ Symbol( "0", ), ], ], line: 853, column: 4, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 853, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 853, }, ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 853, }, ], ], line: 853, column: 14, }, Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "expand", ), Call( [ [ Symbol( "20", ), ], [ Symbol( "\"G=G+1\"", ), ], ], ), ], line: 854, }, ], ], ), Call( [], ), ], line: 853, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "G", ), ], line: 855, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 854, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 855, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"thread creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 5912, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "doonnewstack", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 858, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 5922, }, line: 859, column: 1, }, ], ], ), ], line: 855, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"loadstring\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 5930, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"x=1\"", ), ], ], ), ], line: 865, }, ], ], ), ), ], end: 5936, }, line: 866, column: 1, }, ], ], ), ], line: 859, }, 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: 875, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 875, }, ], values: [ [ Symbol( "nil", ), ], ], line: 879, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 879, }, ], ], line: 880, 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: 880, }, ], [ Symbol( "\"w\"", ), ], ], ), ], line: 880, }, ], ], ), ], line: 880, }, ], ], line: 880, column: 14, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 881, }, ], ], ), ], line: 880, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 881, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dofile\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 5986, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 884, }, ], ], ), ], line: 884, }, ], ], line: 885, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 885, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 885, }, ], ], ), ), ], end: 6000, }, line: 886, column: 1, }, ], ], ), ], line: 882, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 887, }, ], ], ), ], line: 887, }, ], ], ), ], line: 886, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "a", ), ], line: 888, }, Operator( ( "==", true, ), ), Symbol( "\"aaax\"", ), ], ], ), ], line: 887, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"string creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6025, 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: 894, }, Operator( ( "..", true, ), ), Symbol( "'b'", ), ], ], ), ), ], end: 22, }, line: 894, column: 22, }, ], ], ), ], line: 894, }, ], ], line: 895, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 895, }, Operator( ( "==", true, ), ), Symbol( "'ablo ablo'", ), ], ), Ident { expr: [], line: 895, }, ], ], ), ), ], end: 6055, }, line: 896, column: 1, }, ], ], ), ], line: 888, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"dump/undump\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6063, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "testprog", ), ], line: 899, }, ], ], ), ], line: 899, }, ], ], line: 900, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 900, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 900, }, ], ], ), ], line: 900, }, ], ], line: 900, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 900, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 901, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 901, }, ], ], ), ], line: 901, }, ], ], line: 902, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 902, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 902, }, ], ], ), ), ], end: 6096, }, line: 903, column: 1, }, ], ], ), ], line: 896, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "tmpname", ), Call( [], ), ], line: 905, }, ], ], line: 905, column: 8, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"file creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6112, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 907, }, ], [ Symbol( "'w'", ), ], ], ), ], line: 907, }, ], ], ), ], line: 907, }, ], ], line: 907, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Symbol( "\"nomenaoexistente\"", ), ], ], ), ], line: 908, }, ], ], ), ], line: 907, }, Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "close", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 909, }, ], ], ), ], line: 908, }, Return( Some( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Symbol( "'nomenaoexistente'", ), ], ], ), ], line: 910, }, ], ], ), ), ], end: 6146, }, line: 911, column: 1, }, ], ], ), ], line: 905, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 912, }, ], ], ), ], line: 912, }, ], ], ), ], line: 911, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"table creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6163, code: [ Variable { names: [ ( "a", false, ), ( "lim", false, ), ], values: [ [ Table { data: [], line: 915, column: 7, }, ], [ Symbol( "10", ), ], ], line: 916, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 916, }, ], step: None, code: CodeBlock { start: 16, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 916, }, ], ), Symbol( "]", ), ], line: 916, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 916, }, ], ], line: 916, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 916, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 916, }, ], values: [ [ Table { data: [], line: 916, column: 16, }, ], ], line: 916, column: 16, }, ], end: 33, }, line: 916, column: 24, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 917, }, Operator( ( "..", true, ), ), Symbol( "'a'", ), ], ), Symbol( "]", ), ], line: 917, }, ], ], ), ], line: 917, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 917, }, ], ), Symbol( "]", ), ], line: 917, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 917, }, ], ), Ident { expr: [], line: 917, }, ], ], ), ), ], end: 6218, }, line: 918, column: 1, }, ], ], ), ], line: 912, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"constructors\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6226, 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: 921, column: 34, }, ], ], line: 922, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 922, }, ], ], ), ], line: 922, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "e", ), ], line: 922, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ), Ident { expr: [], line: 922, }, ], ], ), ), ], end: 6276, }, line: 923, column: 1, }, ], ], ), ], line: 918, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 925, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "close", ), ], line: 925, }, ], values: [ [ Symbol( "nil", ), ], ], line: 926, column: 3, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"closure creation\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6291, code: [ Function { local: false, name: [ Symbol( "close", ), ], args: [ "b", "c", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 929, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 929, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 929, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 929, }, ], ], ), ), ], end: 14, }, line: 929, column: 14, }, ], ], ), ), ], end: 22, }, line: 930, column: 1, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "close", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 931, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 931, }, ], ], ), ), ], end: 6328, }, line: 932, column: 1, }, ], ], ), ], line: 926, }, Ident { expr: [ Symbol( "testamem", ), Call( [ [ Symbol( "\"coroutines\"", ), ], [ Lambda { args: [], body: CodeBlock { start: 6336, 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: 936, }, ], ], ), ], line: 936, }, Return( Some( [ [ Table { data: [], line: 937, column: 3, }, ], ], ), ), ], end: 27, }, line: 938, column: 1, }, ], ], ), ], line: 935, }, ], ], line: 938, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 939, }, ], ], ), ], line: 939, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 938, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 940, }, ], ], ), ), ], end: 6382, }, line: 941, column: 1, }, ], ], ), ], line: 932, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 941, }, Function { local: true, name: [ Symbol( "gsub", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 6395, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 947, }, Ident { expr: [ Symbol( "b", ), ], line: 947, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"gsub 2 3 4; gettop; return 2\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 947, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 947, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 947, }, ], ], ), ], line: 947, }, ], ], line: 947, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 948, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 947, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 949, }, ], ], ), ), ], end: 6420, }, line: 950, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 952, }, Operator( ( "==", true, ), ), Symbol( "\"alo//alo//uhuh//\"", ), ], ], ), ], line: 950, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"alo.alo.uhuh.\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 953, }, Operator( ( "==", true, ), ), Symbol( "\"//.//.uhuh.\"", ), ], ], ), ], line: 952, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"\"", ), ], [ Symbol( "\"alo\"", ), ], [ Symbol( "\"//\"", ), ], ], ), ], line: 954, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 953, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\".\"", ), ], [ Symbol( "\"/.\"", ), ], ], ), ], line: 955, }, Operator( ( "==", true, ), ), Symbol( "\"/././.\"", ), ], ], ), ], line: 954, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gsub", ), Call( [ [ Symbol( "\"...\"", ), ], [ Symbol( "\"...\"", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 956, }, Operator( ( "==", true, ), ), Symbol( "\"\"", ), ], ], ), ], line: 955, }, 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: 960, }, ], ], line: 960, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 961, }, ], ], ), ], line: 961, }, Operator( ( "==", true, ), ), Symbol( "\"table\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 961, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 961, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 960, }, Variable { names: [ ( "d", false, ), ( "res", false, ), ( "top", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu; gettop; return 3\"", ), ], ], ), ], line: 962, }, ], ], line: 962, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 963, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 963, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 963, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 963, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 962, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 963, }, Ident { expr: [ Symbol( "res", ), ], line: 964, }, Ident { expr: [ Symbol( "top", ), ], line: 964, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"newmetatable xuxu1; gettop; return 3\"", ), ], ], ), ], line: 964, }, ], ], line: 964, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 965, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 965, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res", ), ], line: 965, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 965, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 964, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 965, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 967, }, ], ], line: 967, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 967, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 968, }, ], ], line: 968, column: 9, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "testC", ), Call( [ [ Symbol( "\"pushstring xuxu; gettable R; setmetatable 2\"", ), ], [ Ident { expr: [ Symbol( "x", ), ], line: 969, }, ], ], ), ], line: 968, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 970, }, ], ], ), ], line: 970, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 970, }, ], ], ), ], line: 969, }, 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: 977, }, ], ], ), ], line: 974, }, ], ], line: 977, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res1", ), ], line: 978, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 978, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 978, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 977, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 978, }, Ident { expr: [ Symbol( "res2", ), ], line: 981, }, Ident { expr: [ Symbol( "top", ), ], line: 981, }, ], 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: 984, }, ], ], ), ], line: 981, }, ], ], line: 984, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 985, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 985, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 985, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 984, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 985, }, Ident { expr: [ Symbol( "res2", ), ], line: 988, }, Ident { expr: [ Symbol( "top", ), ], line: 988, }, ], 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: 991, }, ], ], ), ], line: 988, }, ], ], line: 991, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 992, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 992, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 992, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 991, }, Alter { names: [ Ident { expr: [ Symbol( "res1", ), ], line: 992, }, Ident { expr: [ Symbol( "res2", ), ], line: 995, }, Ident { expr: [ Symbol( "top", ), ], line: 995, }, ], 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: 998, }, ], ], ), ], line: 995, }, ], ], line: 998, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res1", ), ], line: 999, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "res2", ), ], line: 999, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "top", ), ], line: 999, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 998, }, DoBlock( CodeBlock { start: 6702, code: [ Variable { names: [ ( "r", false, ), ], values: [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getregistry", ), Call( [], ), ], line: 1003, }, ], ], line: 1003, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 1004, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt_xuxu", ), ], line: 1004, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu1", ), ], line: 1004, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 1004, }, ], ], ), ], line: 1003, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu", ), ], line: 1004, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1005, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), Symbol( ".", ), Symbol( "xuxu1", ), ], line: 1005, }, ], values: [ [ Symbol( "nil", ), ], ], line: 1005, column: 11, }, ], end: 6736, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 1006, }, ]