--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-tests/closure.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing closures\"", ), ], ], ), ], line: 4, }, Variable { names: [ ( "A", false, ), ( "B", false, ), ], values: [ [ Symbol( "0", ), ], [ Table { data: [ ( Some( [ Symbol( "g", ), ], ), [ Symbol( "10", ), ], ), ], line: 6, column: 12, }, ], ], line: 7, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 19, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 8, column: 5, }, ], ], line: 9, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 12, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 11, column: 0, }, DoBlock( CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 12, }, ], ), Symbol( "]", ), ], line: 12, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 8, code: [ Alter { names: [ Ident { expr: [ Symbol( "B", ), Symbol( ".", ), Symbol( "g", ), ], line: 13, }, ], values: [ [ Ident { expr: [ Symbol( "B", ), Symbol( ".", ), Symbol( "g", ), ], line: 13, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 13, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 13, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 13, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 13, }, ], ], line: 13, column: 16, }, Return( Some( [ [ Ident { expr: [ Symbol( "y", ), ], line: 13, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 13, }, ], ], ), ), ], end: 29, }, line: 14, column: 1, }, ], ], line: 14, column: 1, }, ], end: 35, }, ), ], end: 48, }, line: 16, column: 1, }, Variable { names: [ ( "dummy", false, ), ], values: [ [ Lambda { args: [], body: CodeBlock { start: 54, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "A", ), ], line: 17, }, ], ), Symbol( "]", ), ], line: 17, }, ], ], ), ), ], end: 60, }, line: 17, column: 12, }, ], ], line: 17, column: 12, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 17, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 18, }, ], values: [ [ Symbol( "1", ), ], ], line: 19, column: 4, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dummy", ), Call( [], ), ], line: 19, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 19, }, ], ], ), ], line: 19, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 19, }, ], values: [ [ Symbol( "0", ), ], ], line: 19, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Call( [], ), ], line: 20, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 20, }, ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), Call( [], ), ], line: 21, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 21, }, ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "B", ), Symbol( ".", ), Symbol( "g", ), ], line: 23, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 22, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 24, }, ], ], ), ), ], end: 138, }, line: 25, column: 1, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 27, }, ], ], line: 29, column: 0, }, Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "1", ), ], ), [ Table { data: [], line: 29, column: 10, }, ], ), ], line: 29, column: 11, }, ], ], line: 29, column: 11, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 30, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'kv'", ), ], ), ], line: 30, column: 9, }, ], ], ), ], line: 29, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 31, }, ], body: CodeBlock { start: 172, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "A", ), ], line: 32, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 32, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 32, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 32, }, ], ], line: 32, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 32, }, ], values: [ [ Ident { expr: [ Symbol( "A", ), ], line: 33, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 33, column: 5, }, ], end: 188, }, line: 34, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Call( [], ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 35, }, ], ], ), ], line: 34, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Call( [], ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 36, }, ], ], ), ], line: 35, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Call( [], ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 37, }, ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Call( [], ), ], line: 39, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 39, }, ], ], ), ], line: 38, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Call( [], ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 40, }, ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), Call( [], ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 41, }, ], ], ), ], line: 40, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "8", ), ], ), Symbol( "]", ), Call( [], ), ], line: 42, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "A", ), ], line: 42, }, ], ], ), ], line: 41, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 43, }, ], ], ), Symbol( ".", ), Symbol( "__mode", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "'kv'", ), ], ], ), ], line: 42, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "B", ), Symbol( ".", ), Symbol( "g", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "19", ), ], ], ), ], line: 43, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 44, }, ], values: [ [ Table { data: [], line: 48, column: 4, }, ], ], line: 50, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "5", ), ], step: None, code: CodeBlock { start: 312, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 50, }, ], ), Symbol( "]", ), ], line: 50, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 9, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 50, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 50, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "_ENV", ), ], line: 50, }, ], ], ), ), ], end: 16, }, line: 50, column: 16, }, ], ], line: 50, column: 16, }, ], end: 329, }, line: 50, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 51, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 51, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 51, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 51, }, ], ], ), ], line: 50, }, DoBlock( CodeBlock { start: 352, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Ident { expr: [ Symbol( "_ENV", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 54, }, ], ), Symbol( "]", ), ], line: 54, }, ], ], ), ], line: 54, }, ], ], ), ), ], end: 18, }, line: 54, column: 18, }, ], ], line: 55, column: 0, }, Function { local: true, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 23, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 56, }, ], ], ), ), ], end: 26, }, line: 57, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 58, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 58, }, ], ], ), ], line: 57, }, ], end: 389, }, ), Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 59, }, ], values: [ [ Table { data: [], line: 63, column: 4, }, ], ], line: 64, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 400, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 65, }, ], ), Symbol( "]", ), ], line: 65, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "set", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 12, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 65, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 65, }, ], ], line: 65, column: 3, }, ], end: 16, }, line: 65, column: 16, }, ], ), ( Some( [ Symbol( "get", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 22, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 65, }, ], ], ), ), ], end: 25, }, line: 65, column: 25, }, ], ), ], line: 65, column: 26, }, ], ], line: 66, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 66, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], body: CodeBlock { start: 31, code: [ Break, ], end: 33, }, next: None, line: 66, column: 7, }, ], end: 434, }, line: 67, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 68, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 68, }, ], ], ), ], line: 67, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "set", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 68, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "get", ), Call( [], ), ], line: 70, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 69, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "set", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 70, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "get", ), Call( [], ), ], line: 72, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 71, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "get", ), Call( [], ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 72, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 73, }, ], values: [ [ Table { data: [], line: 75, column: 4, }, ], ], line: 76, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"a\"", ), ], ), ( None, [ Symbol( "\"b\"", ), ], ), ], line: 76, column: 8, }, ], ], line: 77, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 77, }, ], step: None, code: CodeBlock { start: 520, code: [ Variable { names: [ ( "k", false, ), ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 78, }, ], ), Symbol( "]", ), ], line: 78, }, ], ], line: 78, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 79, }, ], ), Symbol( "]", ), ], line: 78, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "set", ), ], ), [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 21, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 81, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 81, }, ], ], line: 81, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 81, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 81, }, ], ], line: 81, column: 7, }, ], end: 29, }, line: 82, column: 1, }, ], ), ( Some( [ Symbol( "get", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 35, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 83, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 83, }, ], ], ), ), ], end: 40, }, line: 83, column: 10, }, ], ), ], line: 84, column: 1, }, ], ], line: 85, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 85, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 46, code: [ Break, ], end: 48, }, next: None, line: 85, column: 7, }, ], end: 569, }, line: 86, column: 1, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "set", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "20", ), ], ], ), ], line: 86, }, Variable { names: [ ( "r", false, ), ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "get", ), Call( [], ), ], line: 88, }, ], ], line: 88, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "r", ), ], line: 89, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 89, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), ], ], ), ], line: 88, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), ], line: 89, }, Ident { expr: [ Symbol( "s", ), ], line: 90, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "get", ), Call( [], ), ], line: 90, }, ], ], line: 90, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "r", ), ], line: 91, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 91, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 90, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "set", ), Call( [ [ Symbol( "'a'", ), ], [ Symbol( "'b'", ), ], ], ), ], line: 91, }, Alter { names: [ Ident { expr: [ Symbol( "r", ), ], line: 92, }, Ident { expr: [ Symbol( "s", ), ], line: 93, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "get", ), Call( [], ), ], line: 93, }, ], ], line: 93, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "r", ), ], line: 94, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 94, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 93, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "3", ), ], step: None, code: CodeBlock { start: 665, code: [ Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 99, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 99, }, ], ], ), ), ], end: 8, }, line: 99, column: 8, }, ], ], line: 100, column: 0, }, Break, ], end: 675, }, line: 101, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 102, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 101, }, ForLoop { iter: "k", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 104, }, ], step: None, code: CodeBlock { start: 691, code: [ Variable { names: [ ( "v", false, ), ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 105, }, ], ), Symbol( "]", ), ], line: 105, }, ], ], line: 105, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 105, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "k", ), ], line: 106, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 106, }, ], ], ), ), ], end: 17, }, line: 106, column: 10, }, ], ], line: 107, column: 0, }, Break, ], end: 710, }, line: 108, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 109, }, ], ), ], line: 109, column: 8, }, ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 109, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 108, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 110, }, ], ), ], line: 110, column: 8, }, ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 110, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 109, }, Variable { names: [ ( "b", false, ), ], values: [], line: 115, column: 2, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 747, code: [ Variable { names: [ ( "first", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 118, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 7, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "first", ), ], line: 119, }, ], body: CodeBlock { start: 8, code: [ Return( None, ), ], end: 10, }, next: None, line: 119, column: 10, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "'xuxu'", ), ], ], line: 120, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 120, }, ], values: [ [ Lambda { args: [ "op", "y", ], body: CodeBlock { start: 22, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "op", ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "'set'", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 123, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 123, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 123, }, ], ], line: 123, column: 5, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 125, }, ], ], ), ), ], end: 14, }, next: None, line: 126, column: 1, }, ), line: 126, column: 1, }, ], end: 37, }, line: 127, column: 1, }, ], ], line: 128, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 128, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 42, code: [ DoBlock( CodeBlock { start: 1, code: [ Break, ], end: 3, }, ), ], end: 46, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 130, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 50, code: [ Return( None, ), ], end: 52, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 52, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 133, }, Operator( ( "~=", true, ), ), Symbol( "3", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "error", ), Call( [], ), ], line: 133, }, ], end: 9, }, next: None, line: 133, column: 9, }, ], end: 62, }, next: None, line: 134, column: 1, }, ), line: 134, column: 1, }, ), line: 134, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "first", ), ], line: 134, }, ], values: [ [ Symbol( "nil", ), ], ], line: 135, column: 3, }, ], end: 73, }, line: 136, column: 1, }, ], end: 821, }, line: 137, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "3", ), ], step: None, code: CodeBlock { start: 828, code: [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 140, }, ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Call( [ [ Symbol( "'get'", ), ], ], ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "'xuxu'", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "b", ), Call( [ [ Symbol( "'set'", ), ], [ Symbol( "10", ), ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Call( [ [ Symbol( "'get'", ), ], ], ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 142, }, ], ], ), ], line: 142, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 142, }, ], values: [ [ Symbol( "nil", ), ], ], line: 143, column: 3, }, ], end: 863, }, line: 144, column: 1, }, Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 146, }, ], [ Symbol( "4", ), ], ], ), ], line: 144, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Call( [ [ Symbol( "'get'", ), ], ], ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "'xuxu'", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "b", ), Call( [ [ Symbol( "'set'", ), ], [ Symbol( "10", ), ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Call( [ [ Symbol( "'get'", ), ], ], ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "14", ), ], ], ), ], line: 148, }, Variable { names: [ ( "w", false, ), ], values: [], line: 151, column: 2, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 902, code: [ Return( Some( [ [ Lambda { args: [ "y", ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Lambda { args: [ "z", ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "w", ), ], line: 155, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 155, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 155, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 155, }, ], ], ), ), ], end: 14, }, line: 155, column: 14, }, ], ], ), ), ], end: 20, }, line: 156, column: 1, }, ], ], ), ), ], end: 923, }, line: 157, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 157, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 159, }, ], ], line: 159, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "w", ), ], line: 159, }, ], values: [ [ Symbol( "1.345", ), ], ], line: 160, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "y", ), Call( [ [ Symbol( "20", ), ], ], ), Call( [ [ Symbol( "30", ), ], ], ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "60", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "w", ), ], line: 161, }, ], ], ), ], line: 160, }, DoBlock( CodeBlock { start: 947, code: [ Variable { names: [ ( "X", false, ), ( "Y", false, ), ], values: [], line: 166, column: 4, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 167, }, ], ], line: 169, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 169, }, ], body: CodeBlock { start: 16, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "10", ), ], ], line: 170, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 170, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 9, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 171, }, ], ], ), ), ], end: 12, }, line: 171, column: 8, }, ], ], line: 172, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 172, }, ], body: CodeBlock { start: 15, code: [ Break, ], end: 17, }, next: None, line: 172, column: 5, }, ], end: 34, }, line: 173, column: 1, }, DoBlock( CodeBlock { start: 35, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "20", ), ], ], line: 176, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "Y", ), ], line: 176, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 9, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 177, }, ], ], ), ), ], end: 12, }, line: 177, column: 8, }, ], ], line: 177, column: 8, }, ], end: 48, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), Call( [], ), ], line: 181, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Y", ), Call( [], ), ], line: 181, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 178, }, ], end: 1010, }, ), Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 187, column: 5, }, ], ], line: 188, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 189, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 194, }, Operator( ( ">", true, ), ), Symbol( "10", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 194, }, ], ), Symbol( "]", ), Call( [], ), ], line: 194, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 194, }, ], body: CodeBlock { start: 1020, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 190, }, ], ], line: 190, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 191, }, ], ), Symbol( "]", ), ], line: 190, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 12, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 192, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 192, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 192, column: 6, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 192, }, ], ], ), ), ], end: 21, }, line: 193, column: 1, }, ], ], line: 193, column: 1, }, ], end: 1042, }, line: 194, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "11", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), Call( [], ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), Call( [], ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 194, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 195, }, ], values: [ [ Table { data: [], line: 199, column: 4, }, ], ], line: 200, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 1093, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 201, }, Operator( ( "%", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 7, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 202, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 203, }, ], ), Symbol( "]", ), ], line: 202, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 13, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 204, }, ], ], line: 204, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 204, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 204, }, ], ], line: 204, column: 9, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 204, }, ], ], ), ), ], end: 25, }, line: 205, column: 1, }, ], ], line: 205, column: 1, }, ], end: 33, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 206, }, Operator( ( "%", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 39, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "'not here'", ), ], ], ), ], line: 207, }, Variable { names: [ ( "y", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 209, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 210, }, ], ), Symbol( "]", ), ], line: 209, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 15, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 211, }, ], ], line: 211, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 211, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 211, }, ], ], line: 211, column: 9, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 211, }, ], ], ), ), ], end: 27, }, line: 212, column: 1, }, ], ], line: 212, column: 1, }, ], end: 67, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 213, }, Operator( ( "%", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 73, code: [ Variable { names: [ ( "t", false, ), ], values: [], line: 214, column: 2, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 217, }, ], ), Symbol( "]", ), ], line: 214, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 217, }, ], ], line: 217, column: 7, }, Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"should never be here!\"", ), ], ], ), ], line: 217, }, Variable { names: [ ( "y", false, ), ], values: [ [ Symbol( "2", ), ], ], line: 220, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 220, }, ], values: [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 23, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 222, }, ], ], line: 222, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "y", ), ], line: 222, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 222, }, ], ], line: 222, column: 9, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 222, }, ], ], ), ), ], end: 35, }, line: 223, column: 1, }, ], ], line: 223, column: 1, }, Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"should never be here!\"", ), ], ], ), ], line: 223, }, ], end: 113, }, next: None, line: 226, column: 1, }, ), line: 226, column: 1, }, ), line: 226, column: 1, }, ], end: 1207, }, line: 227, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 1214, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 230, }, ], ), Symbol( "]", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 230, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 230, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 230, }, Operator( ( "%", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 230, }, ], ), Symbol( "]", ), Call( [], ), ], line: 230, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 230, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 230, }, ], end: 1242, }, line: 231, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 231, }, Function { local: true, name: [ Symbol( "t", ), ], args: [], body: CodeBlock { start: 1249, code: [ Function { local: true, name: [ Symbol( "c", ), ], args: [ "a", "b", ], body: CodeBlock { start: 8, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 238, }, Operator( ( "==", true, ), ), Symbol( "\"test\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 238, }, Operator( ( "==", true, ), ), Symbol( "\"OK\"", ), ], ], ), ], line: 238, }, ], end: 19, }, line: 238, column: 19, }, Function { local: true, name: [ Symbol( "v", ), ], args: [ "f", "...", ], body: CodeBlock { start: 27, code: [ Ident { expr: [ Symbol( "c", ), Call( [ [ Symbol( "\"test\"", ), ], [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 239, }, Operator( ( "~=", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "\"FAILED\"", ), Operator( ( "or", true, ), ), Symbol( "\"OK\"", ), ], ], ), ], line: 239, }, ], end: 42, }, line: 239, column: 23, }, Variable { names: [ ( "x", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 241, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "v", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 52, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 241, }, ], ], ), ), ], end: 55, }, line: 241, column: 9, }, ], ], ), ], line: 241, }, ], ], ), ), ], end: 1306, }, line: 242, column: 1, }, Ident { expr: [ Symbol( "t", ), Call( [], ), ], line: 242, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "'debug'", ), ], ], ), ], line: 247, }, ], ], line: 249, column: 0, }, DoBlock( CodeBlock { start: 1315, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Symbol( "3", ), ], [ Symbol( "5", ), ], [ Symbol( "7", ), ], ], line: 250, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "foo1", ), ], line: 250, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 251, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 251, }, ], ], ), ), ], end: 22, }, line: 251, column: 10, }, ], ], line: 251, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "foo2", ), ], line: 251, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 28, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 252, }, ], ], ), ), ], end: 33, }, line: 252, column: 10, }, ], ], line: 252, column: 11, }, DoBlock( CodeBlock { start: 35, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "10", ), ], ], line: 254, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "foo3", ), ], line: 254, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 9, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 255, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 255, }, ], ], ), ), ], end: 14, }, line: 255, column: 10, }, ], ], line: 255, column: 11, }, ], end: 51, }, ), ], end: 1367, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 259, }, ], [ Symbol( "1", ), ], ], ), ], line: 259, }, ], ], ), ], line: 257, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 260, }, ], [ Symbol( "2", ), ], ], ), ], line: 260, }, ], ], ), ], line: 259, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 261, }, ], [ Symbol( "3", ), ], ], ), ], line: 261, }, ], ], ), ], line: 260, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 262, }, ], [ Symbol( "1", ), ], ], ), ], line: 262, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo2", ), ], line: 262, }, ], [ Symbol( "2", ), ], ], ), ], line: 262, }, ], ], ), ], line: 261, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 263, }, ], [ Symbol( "2", ), ], ], ), ], line: 263, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo2", ), ], line: 263, }, ], [ Symbol( "1", ), ], ], ), ], line: 263, }, ], ], ), ], line: 262, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), ], line: 264, }, ], [ Symbol( "1", ), ], ], ), ], line: 264, }, ], ], ), ], line: 263, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 265, }, ], [ Symbol( "1", ), ], ], ), ], line: 265, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), ], line: 265, }, ], [ Symbol( "1", ), ], ], ), ], line: 265, }, ], ], ), ], line: 264, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 266, }, ], [ Symbol( "2", ), ], ], ), ], line: 266, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), ], line: 266, }, ], [ Symbol( "2", ), ], ], ), ], line: 266, }, ], ], ), ], line: 265, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvalueid", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gmatch", ), Call( [ [ Symbol( "\"x\"", ), ], [ Symbol( "\"x\"", ), ], ], ), ], line: 268, }, ], [ Symbol( "1", ), ], ], ), ], line: 268, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ], line: 266, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), Call( [], ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "+", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "foo2", ), Call( [], ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 268, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), ], line: 271, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 271, }, ], [ Symbol( "2", ), ], ], ), ], line: 270, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foo1", ), Call( [], ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "foo2", ), Call( [], ), ], line: 272, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 271, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), Call( [], ), ], line: 273, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "5", ), ], ], ), ], line: 272, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), ], line: 274, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 274, }, ], [ Symbol( "1", ), ], ], ), ], line: 273, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), Call( [], ), ], line: 275, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "5", ), ], ], ), ], line: 274, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), ], line: 276, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 276, }, ], [ Symbol( "2", ), ], ], ), ], line: 275, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foo3", ), Call( [], ), ], line: 277, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), ], line: 279, }, ], [ Ident { expr: [ Symbol( "foo1", ), ], line: 279, }, ], [ Symbol( "3", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 279, }, ], [ Symbol( "1", ), ], ], ), ], line: 279, }, ], ], ), ], line: 277, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), ], line: 280, }, ], [ Ident { expr: [ Symbol( "foo1", ), ], line: 280, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 280, }, ], [ Symbol( "3", ), ], ], ), ], line: 280, }, ], ], ), ], line: 279, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), ], line: 281, }, ], [ Ident { expr: [ Symbol( "foo1", ), ], line: 281, }, ], [ Symbol( "0", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 281, }, ], [ Symbol( "1", ), ], ], ), ], line: 281, }, ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), ], line: 282, }, ], [ Ident { expr: [ Symbol( "print", ), ], line: 282, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 282, }, ], [ Symbol( "1", ), ], ], ), ], line: 282, }, ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), ], line: 283, }, ], [ Table { data: [], line: 283, column: 11, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "foo2", ), ], line: 283, }, ], [ Symbol( "1", ), ], ], ), ], line: 283, }, ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "upvaluejoin", ), ], line: 284, }, ], [ Ident { expr: [ Symbol( "foo1", ), ], line: 284, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 284, }, ], [ Symbol( "1", ), ], ], ), ], line: 284, }, ], ], ), ], line: 283, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 284, }, ]