--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-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: [ ( "x", 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( "x", ), 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( "x", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 8, }, ], ), Symbol( "]", ), ], line: 8, }, ], ], ), ], line: 8, }, ], end: 37, }, line: 8, column: 22, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), 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( "vararg", ), Call( [], ), Symbol( ".", ), Symbol( "n", ), ], line: 28, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "vararg", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), Symbol( ".", ), Symbol( "n", ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 28, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "55", ), ], ], ), ], line: 29, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 31, }, Ident { expr: [ Symbol( "b", ), ], line: 32, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), ], line: 32, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 32, column: 15, }, ], ], ), ], line: 32, }, ], ], ), ], line: 32, }, ], ], line: 32, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "55", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 33, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 32, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, ], values: [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), ], line: 34, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ], line: 34, column: 15, }, ], ], ), ], line: 34, }, ], ], line: 34, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "55", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 34, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 35, }, ], values: [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), ], line: 36, }, ], [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "1", ), ], ), ], line: 36, column: 15, }, ], ], ), ], line: 36, }, ], ], line: 36, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 37, }, ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c12", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 37, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "vararg", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "next", ), ], line: 39, }, ], [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "_G", ), ], line: 39, }, ], ), ( None, [ Symbol( "nil", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ], line: 39, column: 18, }, ], ], ), ], line: 39, }, ], ], ), ], line: 39, }, ], ], line: 40, column: 0, }, Variable { names: [ ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 40, }, ], ], ), ], line: 40, }, ], ], line: 40, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 41, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 41, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 41, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 41, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 40, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 41, }, ], values: [ [ Ident { expr: [ Symbol( "vararg", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "call", ), ], line: 42, }, ], [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "c12", ), ], line: 42, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ], line: 42, column: 16, }, ], ), ], line: 42, column: 17, }, ], ], ), ], line: 42, }, ], ], ), ], line: 42, }, ], ], line: 42, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "n", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "55", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 42, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 43, }, ], values: [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "print", ), ], line: 44, }, ], [ Table { data: [ ( None, [ Symbol( "'+'", ), ], ), ], line: 44, column: 9, }, ], ], ), ], line: 44, }, ], ], line: 44, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 44, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "10", ), ], ), ], line: 47, column: 8, }, ], ], line: 48, column: 0, }, Function { local: false, name: [ Symbol( "t", ), Symbol( ":", ), Symbol( "f", ), ], args: [ "...", ], body: CodeBlock { start: 462, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 48, column: 6, }, ], ], line: 48, column: 7, }, Return( Some( [ [ Ident { expr: [ Symbol( "self", ), Symbol( "[", ), Expr( [ Symbol( "...", ), ], ), Symbol( "]", ), ], line: 48, }, Operator( ( "+", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 48, }, ], ], ), ), ], end: 478, }, line: 48, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ":", ), Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "4", ), ], ], ), ], line: 49, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( ":", ), Symbol( "f", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 49, }, Operator( ( "==", true, ), ), Symbol( "11", ), ], ], ), ], line: 48, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 49, }, Alter { names: [ Ident { expr: [ Symbol( "lim", ), ], line: 50, }, ], values: [ [ Symbol( "20", ), ], ], line: 53, column: 0, }, Variable { names: [ ( "i", false, ), ( "a", false, ), ], values: [ [ Symbol( "1", ), ], [ Table { data: [], line: 53, column: 9, }, ], ], line: 54, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 54, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 54, }, ], body: CodeBlock { start: 521, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 54, }, ], ), Symbol( "]", ), ], line: 54, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 54, }, Operator( ( "+", true, ), ), Symbol( "0.3", ), ], ], line: 54, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 54, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 54, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 54, column: 14, }, ], end: 536, }, line: 54, column: 20, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", "d", "...", ], body: CodeBlock { start: 549, code: [ Variable { names: [ ( "more", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 57, column: 6, }, ], ], line: 57, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "1.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "more", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "5.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "more", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 59, }, Operator( ( "-", true, ), ), Symbol( "4", ), ], ), Symbol( "]", ), ], line: 58, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 59, }, Operator( ( "+", true, ), ), Symbol( "0.3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "more", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "lim", ), ], line: 59, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 59, }, ], ], ), ], line: 57, }, ], end: 588, }, line: 60, column: 1, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 597, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 63, }, Operator( ( "==", true, ), ), Symbol( "1.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 63, }, Operator( ( "==", true, ), ), Symbol( "2.3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 63, }, Operator( ( "==", true, ), ), Symbol( "3.3", ), ], ], ), ], line: 63, }, ], end: 612, }, line: 64, column: 1, }, Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 66, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 66, }, ], ], ), ], line: 64, }, Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "g", ), ], line: 67, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 67, }, ], ], ), ], line: 66, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 67, }, ], values: [ [ Table { data: [], line: 69, column: 4, }, ], ], line: 69, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 69, }, ], values: [ [ Symbol( "1", ), ], ], line: 71, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 71, }, ], body: CodeBlock { start: 636, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, ], ), Symbol( "]", ), ], line: 71, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, ], ], line: 71, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 71, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 71, column: 12, }, ], end: 649, }, line: 71, column: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "call", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "max", ), ], line: 72, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 72, }, ], ], ), ], line: 72, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 72, }, ], ], ), ], line: 71, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 72, }, Function { local: false, name: [ Symbol( "oneless", ), ], args: [ "a", "...", ], body: CodeBlock { start: 673, code: [ Return( Some( [ [ Symbol( "...", ), ], ], ), ), ], end: 676, }, line: 79, column: 10, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "n", "a", "...", ], body: CodeBlock { start: 685, code: [ Variable { names: [ ( "b", false, ), ], values: [], line: 82, column: 2, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 83, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "arg", ), ], line: 83, }, ], ], ), ], line: 82, }, IfStatement { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 84, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 15, code: [ Variable { names: [ ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [ [ Symbol( "...", ), ], ], line: 86, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 86, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 86, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 86, }, ], [ Ident { expr: [ Symbol( "d", ), ], line: 86, }, ], [ Ident { expr: [ Symbol( "oneless", ), Call( [ [ Ident { expr: [ Symbol( "oneless", ), Call( [ [ Ident { expr: [ Symbol( "oneless", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 86, }, ], ], ), ], line: 86, }, ], ], ), ], line: 86, }, ], ], ), ), ], end: 43, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 43, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 88, }, Ident { expr: [ Symbol( "b", ), ], line: 88, }, Ident { expr: [ Symbol( "a", ), ], line: 88, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 88, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], [ Symbol( "...", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 88, }, ], ], line: 88, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 89, }, Operator( ( "==", true, ), ), Symbol( "...", ), ], ], ), ], line: 88, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 90, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 90, }, ], [ Symbol( "...", ), ], ], ), ], line: 90, }, ], ], ), ), ], end: 72, }, next: None, line: 91, column: 1, }, ), line: 91, column: 1, }, ], end: 758, }, line: 92, column: 1, }, 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( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], [ Symbol( "5", ), ], [ Symbol( "4", ), ], [ Symbol( "3", ), ], [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 94, }, ], ], ), ], line: 94, }, ], ], line: 94, column: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 95, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 94, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 95, }, Ident { expr: [ Symbol( "b", ), ], line: 97, }, Ident { expr: [ Symbol( "c", ), ], line: 97, }, Ident { expr: [ Symbol( "d", ), ], line: 97, }, Ident { expr: [ Symbol( "e", ), ], line: 97, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 97, }, ], ], line: 97, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 97, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 98, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "[[ return {...} ]]", ), ], ], ), ], line: 102, }, ], ], line: 102, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 102, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 103, }, ], ], line: 103, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 104, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 104, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 104, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 104, }, ], ], ), ], line: 103, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 104, }, ], 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] == undef)\n return true\n]]", ), ], ], ), ], line: 107, }, ], ], line: 112, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"a\"", ), ], [ Symbol( "\"b\"", ), ], [ Symbol( "nil", ), ], [ Table { data: [], line: 114, column: 12, }, ], [ Ident { expr: [ Symbol( "assert", ), ], line: 114, }, ], ], ), ], line: 114, }, ], ], ), ], line: 112, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 115, }, ], ], ), ], line: 114, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 115, }, ], 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: 117, column: 19, }, ], ], ), ], line: 117, }, ], ], ), ], line: 117, }, ], ), ], line: 117, column: 21, }, ], ], line: 117, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "40", ), ], ], ), ], line: 117, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 118, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 119, }, ], ), ], line: 119, column: 8, }, ], ], line: 119, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 120, }, ], ], ), ], line: 120, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 119, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 120, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "3", ), ], [ Symbol( "5", ), ], [ Symbol( "7", ), ], ], ), ], line: 121, }, ], ), ], line: 121, column: 15, }, ], ], line: 121, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "7", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 122, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 122, }, ], ], ), ], line: 121, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 122, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "select", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], [ Symbol( "3", ), ], [ Symbol( "5", ), ], [ Symbol( "7", ), ], ], ), ], line: 123, }, ], ), ], line: 123, column: 15, }, ], ], line: 123, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "7", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 124, }, ], ], ), ], line: 123, }, Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "select", ), ], line: 125, }, ], [ Symbol( "10000", ), ], ], ), ], line: 124, }, Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "select", ), ], line: 126, }, ], [ Operator( ( "-", false, ), ), Symbol( "10000", ), ], ], ), ], line: 125, }, 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: 1148, code: [ Variable { names: [ ( "a1", false, ), ( "a2", false, ), ( "a3", false, ), ( "a4", false, ), ( "a5", false, ), ( "a6", false, ), ( "a7", false, ), ], values: [], line: 136, column: 14, }, Variable { names: [ ( "a8", false, ), ( "a9", false, ), ( "a10", false, ), ( "a11", false, ), ( "a12", false, ), ( "a13", false, ), ( "a14", false, ), ], values: [], line: 137, column: 14, }, ], end: 1177, }, line: 138, column: 1, }, Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 138, }, DoBlock( CodeBlock { start: 1181, code: [ Function { local: true, name: [ Symbol( "f", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "c", ), ], line: 145, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 145, }, ], ], ), ), ], end: 15, }, line: 145, column: 15, }, Function { local: true, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 20, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 146, }, ], ], ), ), ], end: 28, }, line: 146, column: 13, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 147, }, ], ], line: 147, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 147, }, ], end: 1228, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 149, }, ]