--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/calls.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing functions and calls\"", ), ], ], ), ], line: 1, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 3, }, ], ], line: 3, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "1", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ], ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), ], ], ), ], line: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 8, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 8, }, Operator( ( "==", true, ), ), Symbol( "'boolean'", ), ], ], ), ], line: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 9, }, Operator( ( "==", true, ), ), Symbol( "'nil'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 9, }, Operator( ( "==", true, ), ), Symbol( "'number'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Symbol( "'x'", ), ], ], ), ], line: 9, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Table { data: [], line: 10, column: 3, }, ], ], ), ], line: 9, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "type", ), ], line: 10, }, ], ], ), ], line: 10, }, Operator( ( "==", true, ), ), Symbol( "'function'", ), ], ], ), ], line: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), ], line: 12, }, ], ], ), ], line: 12, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 12, }, ], ], ), ], line: 12, }, ], ], ), ], line: 10, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 12, }, ], values: [ [ Symbol( "nil", ), ], ], line: 14, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 91, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 14, }, ], ], ), ], line: 14, }, ], ], ), ), ], end: 99, }, line: 14, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 15, }, ], ], ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "'function'", ), ], ], ), ], line: 14, }, Alter { names: [ Ident { expr: [ Symbol( "fact", ), ], line: 15, }, ], values: [ [ Symbol( "false", ), ], ], line: 20, column: 0, }, DoBlock( CodeBlock { start: 112, code: [ Variable { names: [ ( "res", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 22, column: 0, }, Function { local: true, name: [ Symbol( "fact", ), ], args: [ "n", ], body: CodeBlock { start: 10, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 23, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 23, }, ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "n", ), ], line: 24, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "fact", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 24, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 24, }, ], ], ), ), ], end: 18, }, next: None, line: 25, column: 1, }, ), line: 25, column: 1, }, ], end: 29, }, line: 26, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fact", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 27, }, Operator( ( "==", true, ), ), Symbol( "120", ), ], ], ), ], line: 26, }, ], end: 151, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fact", ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 28, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 29, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "i", ), ], ), [ Symbol( "10", ), ], ), ], line: 32, column: 7, }, ], ], line: 32, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "self", ), ], line: 32, }, ], values: [ [ Symbol( "20", ), ], ], line: 34, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), ], args: [ "x", ], body: CodeBlock { start: 174, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 34, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "i", ), ], line: 34, }, ], ], ), ), ], end: 181, }, line: 34, column: 14, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], args: [ "x", ], body: CodeBlock { start: 188, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "self", ), ], line: 35, }, ], ], ), ), ], end: 193, }, line: 35, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 37, }, Operator( ( "+", true, ), ), Symbol( "10", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 37, }, ], ], ), ], line: 35, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "t", ), ], line: 37, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "i", ), ], ), [ Operator( ( "-", false, ), ), Symbol( "100", ), ], ), ], line: 39, column: 10, }, ], ], line: 39, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "\"t\"", ), ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "x", ), ], line: 39, }, ], values: [ [ Lambda { args: [ "self", "a", "b", ], body: CodeBlock { start: 236, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "i", ), ], line: 40, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 40, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 40, }, ], ], ), ), ], end: 245, }, line: 40, column: 24, }, ], ], line: 40, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "t", ), Symbol( ":", ), Symbol( "x", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 42, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "95", ), ], ], ), ], line: 40, }, DoBlock( CodeBlock { start: 262, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "0", ), ], ), ], line: 45, column: 8, }, ], ], line: 46, 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: 46, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 46, }, ], values: [ [ Ident { expr: [ Symbol( "self", ), Symbol( ".", ), Symbol( "x", ), ], line: 46, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 46, }, ], [ Symbol( "20", ), ], ], line: 46, column: 16, }, Return( Some( [ [ Ident { expr: [ Symbol( "self", ), ], line: 46, }, ], ], ), ), ], end: 34, }, line: 46, 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: 47, }, Operator( ( "==", true, ), ), Symbol( "60", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 47, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 46, }, ], end: 326, }, ), Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "b", ), ], ), [ Table { data: [ ( Some( [ Symbol( "c", ), ], ), [ Table { data: [], line: 50, column: 11, }, ], ), ], line: 50, column: 12, }, ], ), ], line: 50, column: 13, }, ], ], line: 52, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "f1", ), ], args: [ "x", ], body: CodeBlock { start: 350, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 52, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ), ], end: 355, }, line: 52, column: 16, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ":", ), Symbol( "f2", ), ], args: [ "x", "y", ], body: CodeBlock { start: 368, code: [ Alter { names: [ Ident { expr: [ Symbol( "self", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 53, }, ], ), Symbol( "]", ), ], line: 53, }, ], values: [ [ Ident { expr: [ Symbol( "y", ), ], line: 53, }, ], ], line: 53, column: 6, }, ], end: 375, }, line: 53, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "f1", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 54, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 53, }, Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ":", ), Symbol( "f2", ), Call( [ [ Symbol( "'k'", ), ], [ Symbol( "12", ), ], ], ), ], line: 54, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), Symbol( ".", ), Symbol( "c", ), Symbol( ".", ), Symbol( "k", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 55, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 57, }, ], values: [ [ Symbol( "nil", ), ], ], line: 60, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 431, code: [ Variable { names: [ ( "d", false, ), ], values: [ [ Symbol( "'a'", ), ], ], line: 60, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 60, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 60, }, ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 60, }, ], ), ( None, [ Ident { expr: [ Symbol( "c", ), ], line: 60, }, ], ), ( None, [ Ident { expr: [ Symbol( "d", ), ], line: 60, }, ], ), ], line: 60, column: 16, }, ], ], line: 60, column: 16, }, ], end: 448, }, line: 60, column: 26, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 60, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 64, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 63, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "4", ), ], ], ), ], line: 64, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 67, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 67, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 67, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 67, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 66, }, Function { local: false, name: [ Symbol( "fat", ), ], args: [ "x", ], body: CodeBlock { start: 529, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 70, }, 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: 71, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return fat(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 71, }, Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], ], ), Call( [], ), ], line: 71, }, ], ], ), ), ], end: 24, }, next: None, line: 72, column: 1, }, ), line: 72, column: 1, }, ], end: 554, }, line: 73, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"load 'assert(fat(6)==720)' () \"", ), ], ], ), ], line: 75, }, ], ], ), Call( [], ), ], line: 73, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 75, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "'return fat(5), 3'", ), ], ], ), ], line: 76, }, ], ], line: 76, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 76, }, Ident { expr: [ Symbol( "b", ), ], line: 77, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 77, }, ], ], line: 77, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 78, }, Operator( ( "==", true, ), ), Symbol( "120", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 78, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 77, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 78, }, Function { local: false, name: [ Symbol( "err_on_n", ), ], args: [ "n", ], body: CodeBlock { start: 593, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 82, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "error", ), Call( [], ), ], line: 82, }, Ident { expr: [ Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 82, }, ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Ident { expr: [ Symbol( "err_on_n", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 83, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 83, }, Ident { expr: [ Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 83, }, ], end: 28, }, next: None, line: 84, column: 1, }, ), line: 84, column: 1, }, ], end: 622, }, line: 85, column: 1, }, DoBlock( CodeBlock { start: 623, code: [ Function { local: false, name: [ Symbol( "dummy", ), ], args: [ "n", ], body: CodeBlock { start: 5, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 89, }, 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: 90, }, ], [ Ident { expr: [ Symbol( "n", ), ], line: 90, }, ], ], ), ], line: 90, }, ], ], ), ], line: 90, }, Ident { expr: [ Symbol( "dummy", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 91, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 90, }, ], end: 22, }, next: None, line: 92, column: 1, }, ], end: 28, }, line: 93, column: 1, }, ], end: 652, }, ), Ident { expr: [ Symbol( "dummy", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 94, }, Function { local: false, name: [ Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 661, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 99, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 99, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 99, }, ], end: 12, }, next: None, line: 99, column: 12, }, ], end: 674, }, line: 100, column: 1, }, Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 100, }, Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "200", ), ], ], ), ], line: 101, }, Function { local: false, name: [ Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 687, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 105, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 105, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 105, }, ], ], ), ), ], end: 13, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Symbol( "101", ), ], ], ), ), ], end: 16, }, next: None, line: 105, column: 16, }, ), line: 105, column: 16, }, ], end: 704, }, line: 105, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "deep", ), Call( [ [ Symbol( "30000", ), ], ], ), ], line: 106, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 105, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 106, }, ], values: [ [ Table { data: [], line: 107, column: 4, }, ], ], line: 108, column: 0, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "deep", ), ], args: [ "n", ], body: CodeBlock { start: 724, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 108, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( ":", ), Symbol( "deep", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 108, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 108, }, ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 15, code: [ Return( Some( [ [ Symbol( "101", ), ], ], ), ), ], end: 18, }, next: None, line: 108, column: 18, }, ), line: 108, column: 18, }, ], end: 743, }, line: 108, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "deep", ), Call( [ [ Symbol( "30000", ), ], ], ), ], line: 109, }, Operator( ( "==", true, ), ), Symbol( "101", ), ], ], ), ], line: 108, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 109, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 111, }, ], values: [ [ Symbol( "nil", ), Expr( [ Lambda { args: [ "x", ], body: CodeBlock { start: 766, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 115, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 115, }, ], ], line: 115, column: 3, }, ], end: 770, }, line: 115, column: 9, }, ], ), Ident { expr: [ Call( [ [ Symbol( "23", ), ], ], ), ], line: 115, }, ], ], line: 115, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 116, }, Operator( ( "==", true, ), ), Symbol( "23", ), Operator( ( "and", true, ), ), Expr( [ Lambda { args: [ "x", ], body: CodeBlock { start: 785, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 116, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], ], ), ), ], end: 790, }, line: 116, column: 16, }, ], ), Ident { expr: [ Call( [ [ Symbol( "20", ), ], ], ), ], line: 116, }, Operator( ( "==", true, ), ), Symbol( "40", ), ], ], ), ], line: 115, }, Alter { names: [ Ident { expr: [ Symbol( "Z", ), ], line: 116, }, ], values: [ [ Lambda { args: [ "le", ], body: CodeBlock { start: 803, 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: 124, }, ], ], ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 124, }, ], ], ), ], line: 124, }, ], ], ), ), ], end: 16, }, line: 124, column: 16, }, ], ], ), ], line: 124, }, ], ], ), ), ], end: 24, }, line: 125, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 126, }, ], ], ), ], line: 126, }, ], ], ), ), ], end: 833, }, line: 127, column: 1, }, ], ], line: 127, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "F", ), ], line: 127, }, ], values: [ [ Lambda { args: [ "f", ], body: CodeBlock { start: 839, code: [ Return( Some( [ [ Lambda { args: [ "n", ], body: CodeBlock { start: 5, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 134, }, 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: 135, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 135, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 135, }, ], ], ), ), ], end: 18, }, next: None, line: 135, column: 11, }, ), line: 135, column: 11, }, ], end: 24, }, line: 136, column: 1, }, ], ], ), ), ], end: 864, }, line: 137, column: 1, }, ], ], line: 137, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "fat", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "Z", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 139, }, ], ], ), ], line: 139, }, ], ], line: 139, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "fat", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "fat", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "24", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Z", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 141, }, ], ], ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "Z", ), Call( [ [ Ident { expr: [ Symbol( "F", ), ], line: 141, }, ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 141, }, ], ], ), ], line: 139, }, Function { local: true, name: [ Symbol( "g", ), ], args: [ "z", ], body: CodeBlock { start: 910, 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: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 145, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 145, }, ], ], ), ), ], end: 24, }, line: 145, column: 24, }, ], ], ), ), ], end: 37, }, line: 146, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "z", ), ], line: 147, }, ], [ Ident { expr: [ Symbol( "z", ), ], line: 147, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], [ Ident { expr: [ Symbol( "z", ), ], line: 147, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], [ Ident { expr: [ Symbol( "z", ), ], line: 147, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ], ), ], line: 147, }, ], ], ), ), ], end: 965, }, line: 148, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 148, }, ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 150, }, ], ], line: 150, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "9", ), ], [ Symbol( "16", ), ], ], ), ], line: 151, }, 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: 150, }, Alter { names: [ Ident { expr: [ Symbol( "Z", ), ], line: 151, }, Ident { expr: [ Symbol( "F", ), ], line: 153, }, Ident { expr: [ Symbol( "f", ), ], line: 153, }, ], values: [ [ Symbol( "nil", ), ], ], line: 153, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 153, }, Function { local: false, name: [ Symbol( "unlpack", ), ], args: [ "t", "i", ], body: CodeBlock { start: 1014, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 159, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 159, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ], line: 160, column: 0, }, IfStatement { condition: [ Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 160, }, Operator( ( "<=", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 160, }, ], ), Ident { expr: [], line: 160, }, ], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 161, }, ], ), Symbol( "]", ), ], line: 161, }, ], [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 161, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 161, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 161, }, ], ], ), ), ], end: 28, }, next: None, line: 162, column: 1, }, ], end: 1043, }, line: 163, column: 1, }, Function { local: false, name: [ Symbol( "equaltab", ), ], args: [ "t1", "t2", ], body: CodeBlock { start: 1050, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t1", ), ], line: 166, }, Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t2", ), ], line: 166, }, ], ], ), ], line: 166, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t1", ), ], line: 167, }, ], step: None, code: CodeBlock { start: 16, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 168, }, ], ), Symbol( "]", ), ], line: 168, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t2", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 168, }, ], ), Symbol( "]", ), ], line: 168, }, ], ], ), ], line: 168, }, ], end: 29, }, line: 169, column: 1, }, ], end: 1080, }, line: 170, column: 1, }, Variable { names: [ ( "pack", false, ), ], values: [ [ Lambda { args: [ "...", ], body: CodeBlock { start: 1087, code: [ Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "pack", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 172, }, ], ), Ident { expr: [], line: 172, }, ], ], ), ), ], end: 1097, }, line: 172, column: 17, }, ], ], line: 174, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 1101, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "30", ), ], [ Symbol( "4", ), ], ], ), ), ], end: 1110, }, line: 174, column: 13, }, Function { local: false, name: [ Symbol( "ret2", ), ], args: [ "a", "b", ], body: CodeBlock { start: 1117, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 175, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 175, }, ], ], ), ), ], end: 1122, }, line: 175, 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: 177, column: 17, }, ], ], ), ], line: 177, }, ], ], line: 177, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 177, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 178, }, ], 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: 179, }, ], ), ], line: 179, column: 21, }, ], ], line: 179, column: 21, }, Ident { expr: [ Symbol( "equaltab", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], ], ), ], line: 180, }, ], ], ), ], line: 180, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "equaltab", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 181, }, ], ], ), ], line: 181, }, ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 181, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), ], line: 181, column: 19, }, ], ], ), ], line: 180, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 181, }, Ident { expr: [ Symbol( "b", ), ], line: 182, }, Ident { expr: [ Symbol( "c", ), ], line: 182, }, Ident { expr: [ Symbol( "d", ), ], line: 182, }, ], values: [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 182, }, ], ], ), ], line: 182, }, ], [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 182, }, ], ], ), ], line: 182, }, ], ], line: 182, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 182, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 183, }, Ident { expr: [ Symbol( "b", ), ], line: 184, }, Ident { expr: [ Symbol( "c", ), ], line: 184, }, Ident { expr: [ Symbol( "d", ), ], line: 184, }, ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 184, }, ], ], ), ], line: 184, }, ], [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 184, }, ], ], ), ], line: 184, }, ], ], ), ], line: 184, }, ], ], ), ], line: 184, }, ], ], line: 184, column: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 184, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 185, }, Ident { expr: [ Symbol( "b", ), ], line: 186, }, Ident { expr: [ Symbol( "c", ), ], line: 186, }, Ident { expr: [ Symbol( "d", ), ], line: 186, }, ], values: [ [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Ident { expr: [ Symbol( "pack", ), Call( [ [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 186, }, ], ], ), ], line: 186, }, ], [ Expr( [ Ident { expr: [ Symbol( "ret2", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 186, }, ], ], ), ], line: 186, }, ], ), Ident { expr: [], line: 186, }, ], ], ), ], line: 186, }, ], ], ), ], line: 186, }, ], ], line: 186, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 186, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 187, }, ], 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: 189, column: 12, }, ], ], ), ], line: 189, }, ], ), ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 189, column: 21, }, ], ], ), ], line: 189, }, ], ), ( None, [ Ident { expr: [ Symbol( "unlpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"a\"", ), ], ), ( None, [ Symbol( "\"b\"", ), ], ), ], line: 189, column: 28, }, ], ], ), ], line: 189, }, ], ), ], line: 189, column: 29, }, ], ], ), ], line: 189, }, ], ], line: 189, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 189, }, Ident { expr: [ Symbol( "rawget", ), Call( [ [ Table { data: [], line: 194, column: 4, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 190, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Table { data: [], line: 195, column: 4, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 194, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 196, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 196, }, ], ], ), ], line: 195, }, 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: 197, column: 21, }, ], [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 1466, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 197, }, ], ], ), ), ], end: 1471, }, line: 197, column: 33, }, ], [ Symbol( "\"extra arg\"", ), ], ], ), ], line: 196, }, Variable { names: [ ( "x", false, ), ], values: [ [ Symbol( "\"-- a comment\\0\\0\\0\\n x = 10 + \\n23; \\\n local a = function () x = 'hi' end; \\\n return '\\0'\"", ), ], ], line: 204, column: 0, }, Function { local: false, name: [ Symbol( "read1", ), ], args: [ "x", ], body: CodeBlock { start: 1483, code: [ Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 206, column: 0, }, Return( Some( [ [ Lambda { args: [], body: CodeBlock { start: 8, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 207, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 207, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 208, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 209, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 209, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 209, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 209, }, ], ], ), ], line: 209, }, ], ], ), ), ], end: 28, }, line: 210, column: 1, }, ], ], ), ), ], end: 1512, }, line: 211, column: 1, }, Function { local: false, name: [ Symbol( "cannotload", ), ], args: [ "msg", "a", "b", ], body: CodeBlock { start: 1521, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 214, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 214, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 214, }, ], ], ), ], line: 214, }, ], ], ), ], line: 214, }, ], end: 1536, }, line: 215, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 215, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 217, }, ], ], ), ], line: 217, }, ], [ Symbol( "\"modname\"", ), ], [ Symbol( "\"t\"", ), ], [ Ident { expr: [ Symbol( "_G", ), ], line: 217, }, ], ], ), ], line: 217, }, ], ], ), ], line: 217, }, ], ], line: 217, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 218, }, Operator( ( "==", true, ), ), Symbol( "\"\\0\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 218, }, Operator( ( "==", true, ), ), Symbol( "33", ), ], ], ), ], line: 217, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getinfo", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 219, }, ], ], ), Symbol( ".", ), Symbol( "source", ), ], line: 219, }, Operator( ( "==", true, ), ), Symbol( "\"modname\"", ), ], ], ), ], line: 218, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a text chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 221, }, ], ], ), ], line: 221, }, ], [ Symbol( "\"modname\"", ), ], [ Symbol( "\"b\"", ), ], [ Table { data: [], line: 221, column: 17, }, ], ], ), ], line: 221, }, ], ], ), ], line: 219, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a text chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 222, }, ], [ Symbol( "\"modname\"", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 222, }, ], ], ), ], line: 221, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 222, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1622, code: [ Return( Some( [ [ Symbol( "nil", ), ], ], ), ), ], end: 1625, }, line: 224, column: 12, }, ], ], ), ], line: 224, }, ], ], ), ], line: 224, }, ], ], line: 224, column: 14, }, Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 224, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1638, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 1641, }, line: 227, column: 11, }, ], ], ), ], line: 227, }, ], ], ), ], line: 225, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "nil", ), ], ), ( None, [ Symbol( "\"return \"", ), ], ), ( None, [ Symbol( "\"3\"", ), ], ), ], line: 231, column: 10, }, ], ], line: 231, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 231, }, Ident { expr: [ Symbol( "msg", ), ], line: 232, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1662, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "remove", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 232, }, ], [ Symbol( "1", ), ], ], ), ], line: 232, }, ], ], ), ), ], end: 1672, }, line: 232, column: 19, }, ], ], ), ], line: 232, }, ], ], line: 232, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 233, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 232, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 233, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1692, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 1695, }, line: 236, column: 14, }, ], ], ), ], line: 236, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"b\"", ), ], [ Table { data: [], line: 236, column: 22, }, ], ], ), ], line: 236, }, ], ], line: 236, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 237, }, ], ], ), ], line: 237, }, Operator( ( "==", true, ), ), Symbol( "\"function\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 237, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 236, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 237, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"x = 1; return x\"", ), ], ], ), ], line: 240, }, ], ], ), ], line: 240, }, ], ], line: 240, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 240, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 241, }, ], ], ), ], line: 241, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 241, }, ], ], ), ], line: 241, }, ], ], line: 241, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 242, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "x", ), ], line: 242, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 241, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a binary chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 243, }, ], ], ), ], line: 243, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"t\"", ), ], ], ), ], line: 243, }, ], ], ), ], line: 242, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"attempt to load a binary chunk\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 244, }, ], [ Symbol( "nil", ), ], [ Symbol( "\"t\"", ), ], ], ), ], line: 244, }, ], ], ), ], line: 243, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), ], line: 246, }, ], [ Ident { expr: [ Symbol( "print", ), ], line: 246, }, ], ], ), ], line: 246, }, ], ], ), ], line: 244, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"unexpected symbol\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Symbol( "\"*a = 123\"", ), ], ], ), ], line: 248, }, ], ], ), ], line: 248, }, ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"unexpected symbol\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"*a = 123\"", ), ], ], ), ], line: 249, }, ], ], ), ], line: 248, }, Ident { expr: [ Symbol( "cannotload", ), Call( [ [ Symbol( "\"hhi\"", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 1831, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"hhi\"", ), ], ], ), ], line: 250, }, ], end: 1836, }, line: 250, column: 14, }, ], ], ), ], line: 250, }, ], ], ), ], line: 249, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return _ENV\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "123", ), ], ], ), Call( [], ), ], line: 253, }, Operator( ( "==", true, ), ), Symbol( "123", ), ], ], ), ], line: 250, }, Variable { names: [ ( "x", false, ), ], values: [], line: 257, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "XX", ), ], line: 257, }, ], values: [ [ Symbol( "123", ), ], ], line: 258, column: 0, }, Function { local: true, name: [ Symbol( "h", ), ], args: [], body: CodeBlock { start: 1866, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 259, }, ], ], line: 260, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "XX", ), ], line: 260, }, ], ], ), ), ], end: 1873, }, line: 261, column: 1, }, Variable { names: [ ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "h", ), ], line: 262, }, ], ], ), ], line: 262, }, ], ], line: 262, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 262, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 263, }, ], [ Symbol( "\"\"", ), ], [ Symbol( "\"b\"", ), ], ], ), ], line: 263, }, ], ], line: 263, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 264, }, ], [ Symbol( "2", ), ], ], ), ], line: 264, }, Operator( ( "==", true, ), ), Symbol( "'_ENV'", ), ], ], ), ], line: 263, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 265, }, ], [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "_G", ), ], line: 265, }, ], ], ), ], line: 264, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 266, }, Operator( ( "==", true, ), ), Symbol( "123", ), ], ], ), ], line: 265, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return XX + ...\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Table { data: [ ( Some( [ Symbol( "XX", ), ], ), [ Symbol( "13", ), ], ), ], line: 268, column: 17, }, ], ], ), ], line: 268, }, ], ], ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 268, }, Operator( ( "==", true, ), ), Symbol( "17", ), ], ], ), ], line: 266, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 268, }, ], 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: 280, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 280, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "read1", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 282, }, ], ], ), ], line: 282, }, ], ], ), ], line: 282, }, ], ], ), ], line: 282, }, ], ], line: 282, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), Call( [ [ Symbol( "2", ), ], ], ), Call( [ [ Symbol( "3", ), ], ], ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 283, }, Operator( ( "==", true, ), ), Symbol( "15", ), ], ], ), ], line: 282, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "20", ), ], [ Symbol( "30", ), ], ], line: 287, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 287, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Lambda { args: [ "x", ], body: CodeBlock { start: 2000, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 289, }, Operator( ( "==", true, ), ), Symbol( "\"set\"", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 289, }, ], values: [ [ Symbol( "10", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 289, }, ], ], line: 289, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 289, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 289, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 289, column: 11, }, ], end: 17, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 290, }, ], ], ), ), ], end: 20, }, next: None, line: 291, column: 1, }, ), line: 291, column: 1, }, ], end: 2021, }, line: 292, column: 1, }, ], ], ), ], line: 288, }, ], ], ), ], line: 288, }, ], ], line: 292, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 293, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 292, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 294, }, ], [ Symbol( "1", ), ], [ Symbol( "\"hi\"", ), ], ], ), ], line: 294, }, Operator( ( "==", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 293, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 295, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 294, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 296, }, ], [ Symbol( "2", ), ], [ Symbol( "13", ), ], ], ), ], line: 296, }, Operator( ( "==", true, ), ), Symbol( "\"b\"", ), ], ], ), ], line: 295, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setupvalue", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 297, }, ], [ Symbol( "3", ), ], [ Symbol( "10", ), ], ], ), ], line: 297, }, ], ], ), ], line: 296, }, Ident { expr: [ Symbol( "x", ), Call( [ [ Symbol( "\"set\"", ), ], ], ), ], line: 297, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 299, }, Operator( ( "==", true, ), ), Symbol( "23", ), ], ], ), ], line: 298, }, Ident { expr: [ Symbol( "x", ), Call( [ [ Symbol( "\"set\"", ), ], ], ), ], line: 299, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Call( [], ), ], line: 301, }, Operator( ( "==", true, ), ), Symbol( "24", ), ], ], ), ], line: 300, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 2113, code: [ Return( Some( [ [ Symbol( "nil", ), ], ], ), ), ], end: 2116, }, line: 305, column: 9, }, ], ), Ident { expr: [ Call( [ [ Symbol( "4", ), ], ], ), ], line: 305, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 301, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [], body: CodeBlock { start: 2129, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 306, column: 3, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 306, }, ], ], ), ), ], end: 2135, }, line: 306, column: 12, }, ], ), Ident { expr: [ Call( [ [ Symbol( "4", ), ], ], ), ], line: 306, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 305, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Lambda { args: [ "a", ], body: CodeBlock { start: 2149, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 307, }, ], ], ), ), ], end: 2152, }, line: 307, column: 10, }, ], ), Ident { expr: [ Call( [], ), ], line: 307, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 306, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 307, }, Return( Some( [ [ Ident { expr: [ Symbol( "deep", ), ], line: 310, }, ], ], ), ), ]