--- source: src/main.rs expression: parsed input_file: test-data/lua5.1-tests/calls.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing functions and calls\"", ), ], ], ), ], line: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "1", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ], ), ], line: 5, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), ], ], ), ], line: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 6, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), ], ], ), ], line: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "'nil'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "'number'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "'x'", ), ], ], ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Table { data: [], line: 8, column: 3, }, ], ], ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "type", ), ], line: 8, }, ], ], ), ], line: 8, }, Operator( ( "==", true, ), ), Symbol( "'function'", ), ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), ], line: 10, }, ], ], ), ], line: 10, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 10, }, ], ], ), ], line: 10, }, ], ], ), ], line: 8, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 10, }, ], values: [ [ Symbol( "nil", ), ], ], line: 12, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 86, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 12, }, ], ], ), ], line: 12, }, ], ], ), ), ], end: 94, }, line: 12, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 13, }, ], ], ), ], line: 13, }, Operator( ( "==", true, ), ), Symbol( "'function'", ), ], ], ), ], line: 12, }, Alter { names: [ Ident { expr: [ Symbol( "fact", ), ], line: 13, }, ], values: [ [ Symbol( "false", ), ], ], line: 18, column: 0, }, DoBlock( CodeBlock { start: 107, code: [ Variable { names: [ ( "res", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 20, column: 0, }, Function { local: true, name: [ Symbol( "fact", ), ], args: [ "n", ], body: CodeBlock { start: 10, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 21, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 21, }, ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "n", ), ], line: 22, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "fact", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 22, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 22, }, ], ], ), ), ], end: 18, }, next: None, line: 23, column: 1, }, ), line: 23, column: 1, }, ], end: 29, }, line: 24, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fact", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 25, }, Operator( ( "==", true, ), ), Symbol( "120", ), ], ], ), ], line: 24, }, ], end: 146, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fact", ), ], line: 27, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 26, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 27, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "i", ), ], ), [ Symbol( "10", ), ], ), ], line: 30, column: 7, }, ], ], line: 30, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "self", ), ], line: 30, }, ], values: [ [ Symbol( "20", ), ], ], line: 32, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), ], args: [ "x", ], body: CodeBlock { start: 169, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 32, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "i", ), ], line: 32, }, ], ], ), ), ], end: 176, }, line: 32, column: 14, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], args: [ "x", ], body: CodeBlock { start: 183, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 33, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), ], line: 33, }, ], ], ), ), ], end: 188, }, line: 33, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 35, }, Operator( ( "+", true, ), ), Symbol( "10", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 35, }, ], ], ), ], line: 33, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "t", ), ], line: 35, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "i", ), ], ), [ Operator( ( "-", false, ), ), Symbol( "100", ), ], ), ], line: 37, column: 10, }, ], ], line: 37, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "\"t\"", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "x", ), ], line: 37, }, ], values: [ [ Lambda { args: [ "self", "a", "b", ], body: CodeBlock { start: 231, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "i", ), ], line: 38, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 38, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 38, }, ], ], ), ), ], end: 240, }, line: 38, column: 24, }, ], ], line: 38, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "t", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 40, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "95", ), ], ], ), ], line: 38, }, DoBlock( CodeBlock { start: 257, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ], line: 43, column: 8, }, ], ], line: 44, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "add", ), ], args: [ "x", ], body: CodeBlock { start: 15, code: [ Alter { names: [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 44, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 44, }, ], values: [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 44, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 44, }, ], [ Symbol( "20", ), ], ], line: 44, column: 16, }, Return( Some( [ [ Ident { expr: [ Symbol( "self", ), ], line: 44, }, ], ], ), ), ], end: 34, }, line: 44, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "add", ), Call( [ [ Symbol( "10", ), ], ], ), Symbol( ":", ), Symbol( "add", ), Call( [ [ Symbol( "20", ), ], ], ), Symbol( ":", ), Symbol( "add", ), Call( [ [ Symbol( "30", ), ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "60", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 44, }, ], end: 321, }, ), Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "b", ), ], ), [ Table { data: [ ( Some( [ Symbol( "c", ), ], ), [ Table { data: [], line: 48, column: 11, }, ], ), ], line: 48, column: 12, }, ], ), ], line: 48, column: 13, }, ], ], line: 50, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "f1", ), ], args: [ "x", ], body: CodeBlock { start: 345, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 50, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ), ], end: 350, }, line: 50, column: 16, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ":", ), Symbol( "f2", ), ], args: [ "x", "y", ], body: CodeBlock { start: 363, code: [ Alter { names: [ Ident { expr: [ Symbol( "self", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 51, }, ], ), Symbol( "]", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 51, }, ], ], line: 51, column: 6, }, ], end: 370, }, line: 51, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "f1", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 52, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 51, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ":", ), Symbol( "f2", ), Call( [ [ Symbol( "'k'", ), ], [ Symbol( "12", ), ], ], ), ], line: 52, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "k", ), ], line: 53, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 53, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 53, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 55, }, ], values: [ [ Symbol( "nil", ), ], ], line: 58, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 426, code: [ Variable { names: [ ( "d", false, ), ], values: [ [ Symbol( "'a'", ), ], ], line: 58, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 58, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 58, }, ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 58, }, ], ), ( None, [ Ident { expr: [ Symbol( "c", ), ], line: 58, }, ], ), ( None, [ Ident { expr: [ Symbol( "d", ), ], line: 58, }, ], ), ], line: 58, column: 16, }, ], ], line: 58, column: 16, }, ], end: 443, }, line: 58, column: 26, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 58, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 62, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 62, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 65, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 64, }, Function { local: false, name: [ Symbol( "fat", ), ], args: [ "x", ], body: CodeBlock { start: 524, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 68, }, Operator( ( "<=", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 69, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"return fat(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 69, }, Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], ], ), Call( [], ), ], line: 69, }, ], ], ), ), ], end: 24, }, next: None, line: 70, column: 1, }, ), line: 70, column: 1, }, ], end: 549, }, line: 71, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"loadstring 'assert(fat(6)==720)' () \"", ), ], ], ), ], line: 73, }, ], ], ), Call( [], ), ], line: 71, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 73, }, ], values: [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "'return fat(5), 3'", ), ], ], ), ], line: 74, }, ], ], line: 74, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 74, }, Ident { expr: [ Symbol( "b", ), ], line: 75, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 75, }, ], ], line: 75, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 76, }, Operator( ( "==", true, ), ), Symbol( "120", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 76, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 75, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 76, }, Function { local: false, name: [ Symbol( "err_on_n", ), ], args: [ "n", ], body: CodeBlock { start: 588, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 80, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "error", ), Call( [], ), ], line: 80, }, Ident { expr: [ Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 80, }, ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Ident { expr: [ Symbol( "err_on_n", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 81, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 81, }, Ident { expr: [ Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 81, }, ], end: 28, }, next: None, line: 82, column: 1, }, ), line: 82, column: 1, }, ], end: 617, }, line: 83, column: 1, }, DoBlock( CodeBlock { start: 618, code: [ Function { local: false, name: [ Symbol( "dummy", ), ], args: [ "n", ], body: CodeBlock { start: 5, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 87, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "err_on_n", ), ], line: 88, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 88, }, ], ], ), ], line: 88, }, ], ], ), ], line: 88, }, Ident { expr: [ Symbol( "dummy", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 89, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 88, }, ], end: 22, }, next: None, line: 90, column: 1, }, ], end: 28, }, line: 91, column: 1, }, ], end: 647, }, ), Ident { expr: [ Symbol( "dummy", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 92, }, Function { local: false, name: [ Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 656, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 97, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 97, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 97, }, ], end: 12, }, next: None, line: 97, column: 12, }, ], end: 669, }, line: 98, column: 1, }, Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 98, }, Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "200", ), ], ], ), ], line: 99, }, Function { local: false, name: [ Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 682, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 103, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 103, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 103, }, ], ], ), ), ], end: 13, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Symbol( "101", ), ], ], ), ), ], end: 16, }, next: None, line: 103, column: 16, }, ), line: 103, column: 16, }, ], end: 699, }, line: 103, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "30000", ), ], ], ), ], line: 104, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 103, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 104, }, ], values: [ [ Table { data: [], line: 105, column: 4, }, ], ], line: 106, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 719, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 106, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ":", ), Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 106, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 106, }, ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Return( Some( [ [ Symbol( "101", ), ], ], ), ), ], end: 18, }, next: None, line: 106, column: 18, }, ), line: 106, column: 18, }, ], end: 738, }, line: 106, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "deep", ), Call( [ [ Symbol( "30000", ), ], ], ), ], line: 107, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 106, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 107, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 109, }, ], values: [ [ Symbol( "nil", ), Expr( [ Lambda { args: [ "x", ], body: CodeBlock { start: 761, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 113, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 113, }, ], ], line: 113, column: 3, }, ], end: 765, }, line: 113, column: 9, }, ], ), Ident { expr: [ Call( [ [ Symbol( "23", ), ], ], ), ], line: 113, }, ], ], line: 113, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "23", ), Operator( ( "and", true, ), ), Expr( [ Lambda { args: [ "x", ], body: CodeBlock { start: 780, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 114, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ], ), ), ], end: 785, }, line: 114, column: 16, }, ], ), Ident { expr: [ Call( [ [ Symbol( "20", ), ], ], ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "40", ), ], ], ), ], line: 113, }, Variable { names: [ ( "x", false, ), ( "y", false, ), ( "z", false, ), ( "a", false, ), ], values: [], line: 117, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 117, }, ], values: [ [ Table { data: [], line: 118, column: 4, }, ], ], line: 118, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "lim", ), ], line: 118, }, ], values: [ [ Symbol( "2000", ), ], ], line: 119, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 119, }, ], step: None, code: CodeBlock { start: 815, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 119, }, ], ), Symbol( "]", ), ], line: 119, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 119, }, ], ], line: 119, column: 6, }, ], end: 822, }, line: 119, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "select", ), Call( [ [ Ident { expr: [ Symbol( "lim", ), ], line: 120, }, ], [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 120, }, ], ], ), ], line: 120, }, ], ], ), ], line: 120, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 120, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "'#'", ), ], [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 120, }, ], ], ), ], line: 120, }, ], ], ), ], line: 120, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 120, }, ], ], ), ], line: 119, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 120, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 121, }, ], ], ), ], line: 121, }, ], ], line: 121, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 121, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 122, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 123, }, ], ], ), ], line: 123, }, ], ), ], line: 123, column: 8, }, ], ], line: 123, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 124, }, ], ], ), ], line: 124, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 124, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 124, }, ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 124, }, ], ], ), ], line: 123, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 124, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 125, }, ], [ Ident { expr: [ Symbol( "lim", ), ], line: 125, }, Operator( ( "-", true, ), ), Symbol( "2", ), ], ], ), ], line: 125, }, ], ), ], line: 125, column: 12, }, ], ], line: 125, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 126, }, ], ], ), ], line: 126, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 126, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 126, }, Operator( ( "-", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 126, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 126, }, ], ], ), ], line: 125, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 126, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 127, }, ], [ Symbol( "10", ), ], [ Symbol( "6", ), ], ], ), ], line: 127, }, ], ), ], line: 127, column: 12, }, ], ], line: 127, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 128, }, ], ], ), ], line: 128, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 127, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 128, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 129, }, ], [ Symbol( "11", ), ], [ Symbol( "10", ), ], ], ), ], line: 129, }, ], ), ], line: 129, column: 12, }, ], ], line: 129, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 130, }, ], ], ), ], line: 130, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 129, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 130, }, Ident { expr: [ Symbol( "y", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 131, }, ], [ Symbol( "10", ), ], [ Symbol( "10", ), ], ], ), ], line: 131, }, ], ], line: 131, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 132, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 132, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 131, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 132, }, Ident { expr: [ Symbol( "y", ), ], line: 133, }, Ident { expr: [ Symbol( "z", ), ], line: 133, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 133, }, ], [ Symbol( "10", ), ], [ Symbol( "11", ), ], ], ), ], line: 133, }, ], ], line: 133, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "11", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 134, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 133, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, Ident { expr: [ Symbol( "x", ), ], line: 135, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 135, column: 8, }, ], ], ), ], line: 135, }, ], ], line: 135, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 136, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 136, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 135, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 136, }, Ident { expr: [ Symbol( "x", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "unpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 137, column: 11, }, ], [ Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 137, }, ], ], line: 137, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 137, }, Alter { names: [ Ident { expr: [ Symbol( "Y", ), ], line: 138, }, ], values: [ [ Lambda { args: [ "le", ], body: CodeBlock { start: 1074, code: [ Function { local: true, name: [ Symbol( "a", ), ], args: [ "f", ], body: CodeBlock { start: 6, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "le", ), Call( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 146, }, ], ], ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 146, }, ], ], ), ], line: 146, }, ], ], ), ), ], end: 16, }, line: 146, column: 16, }, ], ], ), ], line: 146, }, ], ], ), ), ], end: 24, }, line: 147, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 148, }, ], ], ), ], line: 148, }, ], ], ), ), ], end: 1104, }, line: 149, column: 1, }, ], ], line: 149, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 149, }, ], values: [ [ Lambda { args: [ "f", ], body: CodeBlock { start: 1110, code: [ Return( Some( [ [ Lambda { args: [ "n", ], body: CodeBlock { start: 5, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 156, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "n", ), ], line: 157, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 157, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 157, }, ], ], ), ), ], end: 18, }, next: None, line: 157, column: 11, }, ), line: 157, column: 11, }, ], end: 24, }, line: 158, column: 1, }, ], ], ), ), ], end: 1135, }, line: 159, column: 1, }, ], ], line: 159, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "fat", ), ], line: 159, }, ], values: [ [ Ident { expr: [ Symbol( "Y", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 161, }, ], ], ), ], line: 161, }, ], ], line: 161, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fat", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "fat", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "24", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Y", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 163, }, ], ], ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "Y", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 163, }, ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 163, }, ], ], ), ], line: 161, }, Function { local: true, name: [ Symbol( "g", ), ], args: [ "z", ], body: CodeBlock { start: 1181, code: [ Function { local: true, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", "d", ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 167, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 167, }, ], ], ), ), ], end: 24, }, line: 167, column: 24, }, ], ], ), ), ], end: 37, }, line: 168, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "z", ), ], line: 169, }, ], [ Ident { expr: [ Symbol( "z", ), ], line: 169, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "z", ), ], line: 169, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], [ Ident { expr: [ Symbol( "z", ), ], line: 169, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 169, }, ], ], ), ), ], end: 1236, }, line: 170, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 170, }, ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 172, }, ], ], line: 172, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "9", ), ], [ Symbol( "16", ), ], ], ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "11", ), Operator( ( "+", true, ), ), Symbol( "12", ), Operator( ( "+", true, ), ), Symbol( "13", ), Operator( ( "+", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "9", ), Operator( ( "+", true, ), ), Symbol( "16", ), Operator( ( "+", true, ), ), Symbol( "10", ), ], ], ), ], line: 172, }, Alter { names: [ Ident { expr: [ Symbol( "Y", ), ], line: 173, }, Ident { expr: [ Symbol( "F", ), ], line: 175, }, Ident { expr: [ Symbol( "f", ), ], line: 175, }, ], values: [ [ Symbol( "nil", ), ], ], line: 175, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 175, }, Function { local: false, name: [ Symbol( "unlpack", ), ], args: [ "t", "i", ], body: CodeBlock { start: 1285, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 181, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 181, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ], line: 182, column: 0, }, IfStatement { condition: [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 182, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 182, }, ], ], ), ], line: 182, }, ], ), Ident { expr: [], line: 182, }, ], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 183, }, ], ), Symbol( "]", ), ], line: 183, }, ], [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 183, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 183, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 183, }, ], ], ), ), ], end: 32, }, next: None, line: 184, column: 1, }, ], end: 1318, }, line: 185, column: 1, }, Function { local: false, name: [ Symbol( "equaltab", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 1325, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 188, }, ], ], ), ], line: 188, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "getn", ), Call( [ [ Ident { expr: [ Symbol( "t2", ), ], line: 188, }, ], ], ), ], line: 188, }, ], ], ), ], line: 188, }, ForFuncLoop { iters: [ "i", "v1", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), ], line: 189, }, ], ], ), ], line: 189, }, ], stop: None, initial: None, code: CodeBlock { start: 26, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "v1", ), ], line: 190, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 190, }, ], ), Symbol( "]", ), ], line: 190, }, ], ], ), ], line: 190, }, ], end: 36, }, line: 191, column: 1, }, ], end: 1362, }, line: 192, column: 1, }, Function { local: true, name: [ Symbol( "pack", ), ], args: [ "...", ], body: CodeBlock { start: 1368, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 195, column: 6, }, ], ], line: 195, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "n", ), ], line: 195, }, ], values: [ [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "'#'", ), ], [ Symbol( "...", ), ], ], ), ], line: 196, }, ], ], line: 197, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 197, }, ], ], ), ), ], end: 1387, }, line: 198, column: 1, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 1391, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "30", ), ], [ Symbol( "4", ), ], ], ), ), ], end: 1400, }, line: 200, column: 13, }, Function { local: false, name: [ Symbol( "ret2", ), ], args: [ "a", "b", ], body: CodeBlock { start: 1407, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 201, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 201, }, ], ], ), ), ], end: 1412, }, line: 201, column: 12, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 203, column: 17, }, ], ], ), ], line: 203, }, ], ], line: 203, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 204, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 204, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 204, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 204, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 203, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 204, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "false", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "'alo'", ), ], ), ( None, [ Symbol( "false", ), ], ), ( None, [ Ident { expr: [ Symbol( "assert", ), ], line: 205, }, ], ), ], line: 205, column: 21, }, ], ], line: 205, column: 21, }, Ident { expr: [ Symbol( "equaltab", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 206, }, ], ], ), ], line: 206, }, ], ], ), ], line: 206, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 206, }, ], ], ), ], line: 205, }, Ident { expr: [ Symbol( "equaltab", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 207, }, ], ], ), ], line: 207, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 207, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), ], line: 207, column: 19, }, ], ], ), ], line: 206, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 207, }, Ident { expr: [ Symbol( "b", ), ], line: 208, }, Ident { expr: [ Symbol( "c", ), ], line: 208, }, Ident { expr: [ Symbol( "d", ), ], line: 208, }, ], values: [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 208, }, ], ], ), ], line: 208, }, ], [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 208, }, ], ], ), ], line: 208, }, ], ], line: 208, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 208, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 209, }, Ident { expr: [ Symbol( "b", ), ], line: 210, }, Ident { expr: [ Symbol( "c", ), ], line: 210, }, Ident { expr: [ Symbol( "d", ), ], line: 210, }, ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 210, }, ], ], ), ], line: 210, }, ], [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 210, }, ], ], ), ], line: 210, }, ], ], ), ], line: 210, }, ], ], ), ], line: 210, }, ], ], line: 210, column: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 210, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 211, }, Ident { expr: [ Symbol( "b", ), ], line: 212, }, Ident { expr: [ Symbol( "c", ), ], line: 212, }, Ident { expr: [ Symbol( "d", ), ], line: 212, }, ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 212, }, ], ], ), ], line: 212, }, ], [ Expr( [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 212, }, ], ], ), ], line: 212, }, ], ), Ident { expr: [], line: 212, }, ], ], ), ], line: 212, }, ], ], ), ], line: 212, }, ], ], line: 212, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 212, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 213, }, ], values: [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 215, column: 12, }, ], ], ), ], line: 215, }, ], ), ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 215, column: 21, }, ], ], ), ], line: 215, }, ], ), ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"a\"", ), ], ), ( None, [ Symbol( "\"b\"", ), ], ), ], line: 215, column: 28, }, ], ], ), ], line: 215, }, ], ), ], line: 215, column: 29, }, ], ], ), ], line: 215, }, ], ], line: 215, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 215, }, Ident { expr: [ Symbol( "rawget", ), Call( [ [ Table { data: [], line: 220, column: 4, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 216, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Table { data: [], line: 221, column: 4, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 220, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 222, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 222, }, ], ], ), ], line: 221, }, Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "sort", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "9", ), ], ), ( None, [ Symbol( "8", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Symbol( "19", ), ], ), ( None, [ Symbol( "23", ), ], ), ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "0", ), ], ), ], line: 223, column: 21, }, ], [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1756, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 223, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 223, }, ], ], ), ), ], end: 1761, }, line: 223, column: 33, }, ], [ Symbol( "\"extra arg\"", ), ], ], ), ], line: 222, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 223, }, ], values: [ [ Symbol( "\"-- a comment\\0\\0\\0\\n x = 10 + \\n23; \\\n local a = function () x = 'hi' end; \\\n return '\\0'\"", ), ], ], line: 230, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 231, column: 0, }, Function { local: false, name: [ Symbol( "read1", ), ], args: [ "x", ], body: CodeBlock { start: 1776, code: [ Return( Some( [ [ Lambda { args: [], body: CodeBlock { start: 4, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 233, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 233, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 234, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 235, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 235, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 235, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 235, }, ], ], ), ], line: 235, }, ], ], ), ), ], end: 24, }, line: 236, column: 1, }, ], ], ), ), ], end: 1801, }, line: 237, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 237, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 239, }, ], ], ), ], line: 239, }, ], [ Symbol( "\"modname\"", ), ], ], ), ], line: 239, }, ], ], ), ], line: 239, }, ], ], line: 239, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 240, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 240, }, Operator( ( "==", true, ), ), Symbol( "33", ), ], ], ), ], line: 239, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getinfo", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 241, }, ], ], ), Symbol( ".", ), Symbol( "source", ), ], line: 241, }, Operator( ( "==", true, ), ), Symbol( "\"modname\"", ), ], ], ), ], line: 240, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 241, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Symbol( "\"x = 1; return x\"", ), ], ], ), ], line: 243, }, ], ], ), ], line: 243, }, ], ], line: 243, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 243, }, ], values: [ [ Symbol( "0", ), ], ], line: 244, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 244, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 245, }, ], ], ), ], line: 245, }, ], ], ), ], line: 245, }, ], ], ), ], line: 245, }, ], ], line: 245, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 246, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 246, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 245, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 246, }, ], values: [ [ Symbol( "0", ), ], ], line: 249, column: 0, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Symbol( "\"*a = 123\"", ), ], ], ), ], line: 249, }, ], ], ), ], line: 249, }, ], ], line: 249, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 250, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 250, }, ], ], ), ], line: 250, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 250, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 249, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 250, }, Ident { expr: [ Symbol( "b", ), ], line: 252, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1922, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"hhi\"", ), ], ], ), ], line: 252, }, ], end: 1927, }, line: 252, column: 14, }, ], ], ), ], line: 252, }, ], ], line: 252, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 253, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 253, }, ], [ Symbol( "\"hhi\"", ), ], ], ), ], line: 253, }, ], ], ), ], line: 252, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 253, }, ], values: [ [ MultilineString( "[[\n return function (x)\n return function (y)\n return function (z)\n return x+y+z\n end\n end\n end\n]]", ), ], ], line: 264, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 264, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 266, }, ], ], ), ], line: 266, }, ], ], ), ], line: 266, }, ], ], ), ], line: 266, }, ], ], line: 266, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), Call( [ [ Symbol( "2", ), ], ], ), Call( [ [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 267, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 266, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "20", ), ], [ Symbol( "30", ), ], ], line: 271, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 271, }, ], values: [ [ Ident { expr: [ Symbol( "loadstring", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 1994, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 273, }, Operator( ( "==", true, ), ), Symbol( "\"set\"", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 273, }, ], values: [ [ Symbol( "10", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 273, }, ], ], line: 273, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 273, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 273, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 273, column: 11, }, ], end: 17, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, ], ], ), ), ], end: 20, }, next: None, line: 275, column: 1, }, ), line: 275, column: 1, }, ], end: 2015, }, line: 276, column: 1, }, ], ], ), ], line: 272, }, ], ], ), ], line: 272, }, ], ], line: 276, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 277, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 278, }, ], [ Symbol( "1", ), ], [ Symbol( "\"hi\"", ), ], ], ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 277, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 279, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 278, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 280, }, ], [ Symbol( "2", ), ], [ Symbol( "13", ), ], ], ), ], line: 280, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 279, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 281, }, ], [ Symbol( "3", ), ], [ Symbol( "10", ), ], ], ), ], line: 281, }, ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "x", ), Call( [ [ Symbol( "\"set\"", ), ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 283, }, Operator( ( "==", true, ), ), Symbol( "23", ), ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "x", ), Call( [ [ Symbol( "\"set\"", ), ], ], ), ], line: 283, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 285, }, Operator( ( "==", true, ), ), Symbol( "24", ), ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 2107, code: [ Return( Some( [ [ Symbol( "nil", ), ], ], ), ), ], end: 2110, }, line: 289, column: 9, }, ], ), Ident { expr: [ Call( [ [ Symbol( "4", ), ], ], ), ], line: 289, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 285, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 2123, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 290, column: 3, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 290, }, ], ], ), ), ], end: 2129, }, line: 290, column: 12, }, ], ), Ident { expr: [ Call( [ [ Symbol( "4", ), ], ], ), ], line: 290, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 289, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [ "a", ], body: CodeBlock { start: 2143, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 291, }, ], ], ), ), ], end: 2146, }, line: 291, column: 10, }, ], ), Ident { expr: [ Call( [], ), ], line: 291, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 290, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 291, }, Return( Some( [ [ Ident { expr: [ Symbol( "deep", ), ], line: 294, }, ], ], ), ), ]