--- source: src/main.rs expression: parsed input_file: test-data/lua5.3-tests/vararg.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing vararg'", ), ], ], ), ], line: 4, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", "...", ], body: CodeBlock { start: 11, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "'#'", ), ], [ Symbol( "...", ), ], ], ), ], line: 7, }, ], ), ( None, [ Symbol( "...", ), ], ), ], line: 7, column: 15, }, ], ], line: 8, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "arg", ), Symbol( ".", ), Symbol( "n", ), ], line: 8, }, ], step: None, code: CodeBlock { start: 24, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 8, }, ], ), Symbol( "]", ), ], line: 8, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 8, }, ], ), Symbol( "]", ), ], line: 8, }, ], ], ), ], line: 8, }, ], end: 37, }, line: 8, column: 22, }, Return( Some( [ [ Ident { expr: [ Symbol( "arg", ), Symbol( ".", ), Symbol( "n", ), ], line: 9, }, ], ], ), ), ], end: 53, }, line: 10, column: 1, }, Function { local: false, name: [ Symbol( "c12", ), ], args: [ "...", ], body: CodeBlock { start: 58, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 13, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "arg", ), ], line: 13, }, ], ], ), ], line: 13, }, Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 14, column: 6, }, ], ], line: 14, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "n", ), ], line: 14, }, ], values: [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "x", ), ], line: 14, }, ], ], line: 15, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Expr( [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "n", ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 15, }, ], ], line: 16, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "res", ), ], line: 16, }, ], body: CodeBlock { start: 48, code: [ Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 16, }, ], values: [ [ Symbol( "55", ), ], ], line: 16, column: 3, }, ], end: 52, }, next: None, line: 16, column: 7, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 17, }, ], [ Symbol( "2", ), ], ], ), ), ], end: 115, }, line: 18, column: 1, }, Function { local: false, name: [ Symbol( "vararg", ), ], args: [ "...", ], body: CodeBlock { start: 120, code: [ Return( Some( [ [ Table { data: [ ( Some( [ Symbol( "n", ), ], ), [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "'#'", ), ], [ Symbol( "...", ), ], ], ), ], line: 20, }, ], ), ( None, [ Symbol( "...", ), ], ), ], line: 20, column: 13, }, ], ], ), ), ], end: 134, }, line: 20, column: 19, }, Variable { names: [ ( "call", false, ), ], values: [ [ Lambda { args: [ "f", "args", ], body: CodeBlock { start: 143, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), Call( [ [ Ident { expr: [ Symbol( "args", ), ], line: 22, }, ], [ Symbol( "1", ), ], [ Ident { expr: [ Symbol( "args", ), Symbol( ".", ), Symbol( "n", ), ], line: 22, }, ], ], ), ], line: 22, }, ], ], ), ], line: 22, }, ], ], ), ), ], end: 160, }, line: 22, column: 26, }, ], ], line: 22, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 24, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 25, column: 11, }, ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 25, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"alo\"", ), ], ), ( None, [ Symbol( "nil", ), ], ), ( None, [ Symbol( "45", ), ], ), ( None, [ Ident { expr: [ Symbol( "f", ), ], line: 26, }, ], ), ( None, [ Symbol( "nil", ), ], ), ], line: 26, column: 15, }, ], [ Symbol( "\"alo\"", ), ], [ Symbol( "nil", ), ], [ Symbol( "45", ), ], [ Ident { expr: [ Symbol( "f", ), ], line: 26, }, ], [ Symbol( "nil", ), ], ], ), ], line: 26, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 28, }, Operator( ( "==", true, ), ), Symbol( "55", ), ], ], ), ], line: 26, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 28, }, Ident { expr: [ Symbol( "b", ), ], line: 29, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), ], line: 29, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 29, column: 15, }, ], ], ), ], line: 29, }, ], ], ), ], line: 29, }, ], ], line: 29, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "==", true, ), ), Symbol( "55", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 30, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 29, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, ], values: [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), ], line: 31, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ], line: 31, column: 15, }, ], ], ), ], line: 31, }, ], ], line: 31, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "55", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 31, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, ], values: [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), ], line: 33, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ], line: 33, column: 15, }, ], ], ), ], line: 33, }, ], ], line: 33, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 34, }, ], ], ), ], line: 33, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 34, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "vararg", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "next", ), ], line: 36, }, ], [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "_G", ), ], line: 36, }, ], ), ( None, [ Symbol( "nil", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ], line: 36, column: 18, }, ], ], ), ], line: 36, }, ], ], ), ], line: 36, }, ], ], line: 37, column: 0, }, Variable { names: [ ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 37, }, ], ], ), ], line: 37, }, ], ], line: 37, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 38, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 38, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 38, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 38, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 38, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 37, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 38, }, ], values: [ [ Ident { expr: [ Symbol( "vararg", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "call", ), ], line: 39, }, ], [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "c12", ), ], line: 39, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 39, column: 16, }, ], ), ], line: 39, column: 17, }, ], ], ), ], line: 39, }, ], ], ), ], line: 39, }, ], ], line: 39, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "55", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 40, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 39, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 40, }, ], values: [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 41, }, ], [ Table { data: [ ( None, [ Symbol( "'+'", ), ], ), ], line: 41, column: 9, }, ], ], ), ], line: 41, }, ], ], line: 41, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 42, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 41, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "10", ), ], ), ], line: 44, column: 8, }, ], ], line: 45, column: 0, }, Function { local: false, name: [ Symbol( "t", ), Symbol( ":", ), Symbol( "f", ), ], args: [ "...", ], body: CodeBlock { start: 439, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 45, column: 6, }, ], ], line: 45, column: 7, }, Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( "[", ), Expr( [ Symbol( "...", ), ], ), Symbol( "]", ), ], line: 45, }, Operator( ( "+", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 45, }, ], ], ), ), ], end: 455, }, line: 45, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ":", ), Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "4", ), ], ], ), ], line: 46, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( ":", ), Symbol( "f", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 46, }, Operator( ( "==", true, ), ), Symbol( "11", ), ], ], ), ], line: 45, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 46, }, Alter { names: [ Ident { expr: [ Symbol( "lim", ), ], line: 47, }, ], values: [ [ Symbol( "20", ), ], ], line: 50, column: 0, }, Variable { names: [ ( "i", false, ), ( "a", false, ), ], values: [ [ Symbol( "1", ), ], [ Table { data: [], line: 50, column: 9, }, ], ], line: 51, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 51, }, ], body: CodeBlock { start: 498, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, ], ), Symbol( "]", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, Operator( ( "+", true, ), ), Symbol( "0.3", ), ], ], line: 51, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 51, column: 14, }, ], end: 513, }, line: 51, column: 20, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", "d", "...", ], body: CodeBlock { start: 526, code: [ Variable { names: [ ( "more", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 54, column: 6, }, ], ], line: 54, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "1.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "more", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "5.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "more", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 56, }, Operator( ( "-", true, ), ), Symbol( "4", ), ], ), Symbol( "]", ), ], line: 55, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 56, }, Operator( ( "+", true, ), ), Symbol( "0.3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "more", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 56, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 56, }, ], ], ), ], line: 54, }, ], end: 565, }, line: 57, column: 1, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 574, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "1.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "2.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 60, }, Operator( ( "==", true, ), ), Symbol( "3.3", ), ], ], ), ], line: 60, }, ], end: 589, }, line: 61, column: 1, }, Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 63, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 63, }, ], ], ), ], line: 61, }, Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 64, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 64, }, ], ], ), ], line: 63, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 64, }, ], values: [ [ Table { data: [], line: 66, column: 4, }, ], ], line: 66, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 66, }, ], values: [ [ Symbol( "1", ), ], ], line: 68, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 68, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 68, }, ], body: CodeBlock { start: 613, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 68, }, ], ), Symbol( "]", ), ], line: 68, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 68, }, ], ], line: 68, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 68, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 68, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 68, column: 12, }, ], end: 626, }, line: 68, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "max", ), ], line: 69, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 69, }, ], ], ), ], line: 69, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 69, }, ], ], ), ], line: 68, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 69, }, Function { local: false, name: [ Symbol( "oneless", ), ], args: [ "a", "...", ], body: CodeBlock { start: 650, code: [ Return( Some( [ [ Symbol( "...", ), ], ], ), ), ], end: 653, }, line: 76, column: 10, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "n", "a", "...", ], body: CodeBlock { start: 662, code: [ Variable { names: [ ( "b", false, ), ], values: [], line: 79, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 80, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "arg", ), ], line: 80, }, ], ], ), ], line: 79, }, IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 81, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 15, code: [ Variable { names: [ ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [ [ Symbol( "...", ), ], ], line: 83, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 83, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 83, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 83, }, ], [ Ident { expr: [ Symbol( "d", ), ], line: 83, }, ], [ Ident { expr: [ Symbol( "oneless", ), Call( [ [ Ident { expr: [ Symbol( "oneless", ), Call( [ [ Ident { expr: [ Symbol( "oneless", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 83, }, ], ], ), ], line: 83, }, ], ], ), ], line: 83, }, ], ], ), ), ], end: 43, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 43, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 85, }, Ident { expr: [ Symbol( "b", ), ], line: 85, }, Ident { expr: [ Symbol( "a", ), ], line: 85, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 85, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Symbol( "...", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 85, }, ], ], line: 85, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 86, }, Operator( ( "==", true, ), ), Symbol( "...", ), ], ], ), ], line: 85, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 87, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 87, }, ], [ Symbol( "...", ), ], ], ), ], line: 87, }, ], ], ), ), ], end: 72, }, next: None, line: 88, column: 1, }, ), line: 88, column: 1, }, ], end: 735, }, line: 89, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 89, }, Ident { expr: [ Symbol( "b", ), ], line: 91, }, Ident { expr: [ Symbol( "c", ), ], line: 91, }, Ident { expr: [ Symbol( "d", ), ], line: 91, }, Ident { expr: [ Symbol( "e", ), ], line: 91, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "5", ), ], [ Symbol( "4", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 91, }, ], ], ), ], line: 91, }, ], ], line: 91, column: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 91, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 92, }, Ident { expr: [ Symbol( "b", ), ], line: 94, }, Ident { expr: [ Symbol( "c", ), ], line: 94, }, Ident { expr: [ Symbol( "d", ), ], line: 94, }, Ident { expr: [ Symbol( "e", ), ], line: 94, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 94, }, ], ], line: 94, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 94, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 95, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "[[ return {...} ]]", ), ], ], ), ], line: 99, }, ], ], line: 99, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 99, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 100, }, ], ], line: 100, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 101, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 101, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 101, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 100, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 101, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "[[\n local x = {...}\n for i=1,select('#', ...) do assert(x[i] == select(i, ...)) end\n assert(x[select('#', ...)+1] == nil)\n return true\n]]", ), ], ], ), ], line: 104, }, ], ], line: 109, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"a\"", ), ], [ Symbol( "\"b\"", ), ], [ Symbol( "nil", ), ], [ Table { data: [], line: 111, column: 12, }, ], [ Ident { expr: [ Symbol( "assert", ), ], line: 111, }, ], ], ), ], line: 111, }, ], ], ), ], line: 109, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 112, }, ], ], ), ], line: 111, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 112, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "3", ), ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 114, column: 19, }, ], ], ), ], line: 114, }, ], ], ), ], line: 114, }, ], ), ], line: 114, column: 21, }, ], ], line: 114, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 115, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 115, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 115, }, Operator( ( "==", true, ), ), Symbol( "40", ), ], ], ), ], line: 114, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 115, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 116, }, ], ), ], line: 116, column: 8, }, ], ], line: 116, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 117, }, ], ], ), ], line: 117, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 116, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 117, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "3", ), ], [ Symbol( "5", ), ], [ Symbol( "7", ), ], ], ), ], line: 118, }, ], ), ], line: 118, column: 15, }, ], ], line: 118, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "7", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 118, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 119, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "5", ), ], [ Symbol( "7", ), ], ], ), ], line: 120, }, ], ), ], line: 120, column: 15, }, ], ], line: 120, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 121, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 121, }, Operator( ( "==", true, ), ), Symbol( "7", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 121, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 120, }, Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "select", ), ], line: 122, }, ], [ Symbol( "10000", ), ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "select", ), ], line: 123, }, ], [ Operator( ( "-", false, ), ), Symbol( "10000", ), ], ], ), ], line: 122, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p48", "p49", "p50", "...", ], body: CodeBlock { start: 1125, code: [ Variable { names: [ ( "a1", false, ), ( "a2", false, ), ( "a3", false, ), ( "a4", false, ), ( "a5", false, ), ( "a6", false, ), ( "a7", false, ), ], values: [], line: 133, column: 14, }, Variable { names: [ ( "a8", false, ), ( "a9", false, ), ( "a10", false, ), ( "a11", false, ), ( "a12", false, ), ( "a13", false, ), ( "a14", false, ), ], values: [], line: 134, column: 14, }, ], end: 1154, }, line: 135, column: 1, }, Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 135, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 138, }, ]