--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-tests/all.lua --- [ Variable { names: [ ( "version", false, ), ], values: [ [ Symbol( "\"Lua 5.4\"", ), ], ], line: 7, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "_VERSION", ), ], line: 7, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "version", ), ], line: 7, }, ], body: CodeBlock { start: 9, code: [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stderr", ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Symbol( "\"This test suite is for \"", ), ], [ Ident { expr: [ Symbol( "version", ), ], line: 8, }, ], [ Symbol( "\", not for \"", ), ], [ Ident { expr: [ Symbol( "_VERSION", ), ], line: 9, }, ], [ Symbol( "\"\\nExiting tests\"", ), ], ], ), ], line: 8, }, Return( None, ), ], end: 27, }, next: None, line: 11, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "ARG", ), ], line: 11, }, ], values: [ [ Ident { expr: [ Symbol( "arg", ), ], line: 14, }, ], ], line: 14, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "_soft", ), ], line: 14, }, ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 21, }, ], [ Symbol( "\"_soft\"", ), ], ], ), ], line: 21, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ], line: 21, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "_port", ), ], line: 21, }, ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 23, }, ], [ Symbol( "\"_port\"", ), ], ], ), ], line: 23, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ], line: 23, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "_nomsg", ), ], line: 23, }, ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 25, }, ], [ Symbol( "\"_nomsg\"", ), ], ], ), ], line: 25, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ], line: 28, column: 0, }, Variable { names: [ ( "usertests", false, ), ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 28, }, ], [ Symbol( "\"_U\"", ), ], ], ), ], line: 28, }, ], ], line: 30, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "usertests", ), ], line: 30, }, ], body: CodeBlock { start: 74, code: [ Alter { names: [ Ident { expr: [ Symbol( "_soft", ), ], line: 32, }, ], values: [ [ Symbol( "true", ), ], ], line: 32, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "_port", ), ], line: 32, }, ], values: [ [ Symbol( "true", ), ], ], line: 33, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "_nomsg", ), ], line: 33, }, ], values: [ [ Symbol( "true", ), ], ], line: 34, column: 3, }, ], end: 84, }, next: None, line: 35, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "debug", ), ], line: 35, }, ], values: [ [ Symbol( "nil", ), ], ], line: 41, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "usertests", ), ], line: 41, }, ], body: CodeBlock { start: 90, code: [ Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 42, }, ], values: [ [ Symbol( "nil", ), ], ], line: 42, column: 3, }, ], end: 94, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 94, code: [ Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 44, }, ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 44, }, ], [ Symbol( "\"T\"", ), ], ], ), ], line: 44, }, ], ], line: 44, column: 8, }, ], end: 103, }, next: None, line: 45, column: 1, }, ), line: 45, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\n\\tStarting Tests\"", ), ], ], ), ], line: 45, }, DoBlock( CodeBlock { start: 108, code: [ Variable { names: [ ( "random_x", false, ), ( "random_y", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "randomseed", ), Call( [], ), ], line: 58, }, ], ], line: 58, column: 10, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"random seeds: %d, %d\"", ), ], [ Ident { expr: [ Symbol( "random_x", ), ], line: 59, }, ], [ Ident { expr: [ Symbol( "random_y", ), ], line: 59, }, ], ], ), ], line: 59, }, ], ], ), ], line: 58, }, ], end: 132, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"current path:\\n****\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "path", ), ], line: 62, }, Operator( ( "..", true, ), ), Symbol( "\"****\\n\"", ), ], ], ), ], line: 60, }, Variable { names: [ ( "initclock", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), Call( [], ), ], line: 65, }, ], ], line: 66, column: 0, }, Variable { names: [ ( "lastclock", false, ), ], values: [ [ Ident { expr: [ Symbol( "initclock", ), ], line: 66, }, ], ], line: 67, column: 0, }, Variable { names: [ ( "walltime", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "time", ), Call( [], ), ], line: 67, }, ], ], line: 69, column: 0, }, Variable { names: [ ( "collectgarbage", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 69, }, ], ], line: 71, column: 0, }, DoBlock( CodeBlock { start: 167, code: [ Variable { names: [ ( "msgs", false, ), ], values: [ [ Table { data: [], line: 74, column: 5, }, ], ], line: 75, column: 0, }, Function { local: false, name: [ Symbol( "Message", ), ], args: [ "m", ], body: CodeBlock { start: 10, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_nomsg", ), ], line: 76, }, ], body: CodeBlock { start: 4, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 77, }, ], ], ), ], line: 77, }, Alter { names: [ Ident { expr: [ Symbol( "msgs", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "msgs", ), ], line: 78, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 77, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 78, }, ], [ Symbol( "3", ), ], [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ], ), ], line: 78, }, ], ], line: 78, column: 19, }, ], end: 28, }, next: None, line: 79, column: 1, }, ], end: 39, }, line: 80, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "setlocale", ), Call( [ [ Symbol( "\"C\"", ), ], ], ), ], line: 82, }, ], ], ), ], line: 80, }, Variable { names: [ ( "T", false, ), ( "print", false, ), ( "format", false, ), ( "write", false, ), ( "assert", false, ), ( "type", false, ), ( "unpack", false, ), ( "floor", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), ], line: 84, }, ], [ Ident { expr: [ Symbol( "print", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "write", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "assert", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "type", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), ], line: 85, }, ], ], line: 88, column: 0, }, Function { local: true, name: [ Symbol( "F", ), ], args: [ "m", ], body: CodeBlock { start: 92, code: [ Function { local: true, name: [ Symbol( "round", ), ], args: [ "m", ], body: CodeBlock { start: 6, code: [ Alter { names: [ Ident { expr: [ Symbol( "m", ), ], line: 90, }, ], values: [ [ Ident { expr: [ Symbol( "m", ), ], line: 90, }, Operator( ( "+", true, ), ), Symbol( "0.04999", ), ], ], line: 91, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "format", ), Call( [ [ Symbol( "\"%.1f\"", ), ], [ Ident { expr: [ Symbol( "m", ), ], line: 91, }, ], ], ), ], line: 91, }, ], ], ), ), ], end: 19, }, line: 92, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "m", ), ], line: 93, }, Operator( ( "<", true, ), ), Symbol( "1000", ), ], body: CodeBlock { start: 24, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "m", ), ], line: 93, }, ], ], ), ), ], end: 27, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 27, code: [ Alter { names: [ Ident { expr: [ Symbol( "m", ), ], line: 95, }, ], values: [ [ Ident { expr: [ Symbol( "m", ), ], line: 95, }, Operator( ( "/", true, ), ), Symbol( "1000", ), ], ], line: 96, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "m", ), ], line: 96, }, Operator( ( "<", true, ), ), Symbol( "1000", ), ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "round", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 96, }, ], ], ), ], line: 96, }, Operator( ( "..", true, ), ), Symbol( "\"K\"", ), ], ], ), ), ], end: 18, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 18, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "round", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 98, }, Operator( ( "/", true, ), ), Symbol( "1000", ), ], ], ), ], line: 98, }, Operator( ( "..", true, ), ), Symbol( "\"M\"", ), ], ], ), ), ], end: 28, }, next: None, line: 99, column: 1, }, ), line: 99, column: 1, }, ], end: 56, }, next: None, line: 100, column: 1, }, ), line: 100, column: 1, }, ], end: 149, }, line: 101, column: 1, }, Variable { names: [ ( "Cstacklevel", false, ), ], values: [], line: 103, column: 2, }, Variable { names: [ ( "showmem", false, ), ], values: [], line: 105, column: 2, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), ], line: 106, }, ], body: CodeBlock { start: 157, code: [ Variable { names: [ ( "max", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 107, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "showmem", ), ], line: 107, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 9, code: [ Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 109, }, Operator( ( "*", true, ), ), Symbol( "1024", ), ], ], line: 109, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "max", ), ], line: 109, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "m", ), ], line: 110, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "max", ), ], line: 110, }, ], ), Ident { expr: [], line: 110, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "m", ), ], line: 110, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "max", ), ], line: 110, }, ], ], line: 110, column: 11, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "format", ), Call( [ [ Symbol( "\" ---- total memory: %s, max memory: %s ----\\n\"", ), ], [ Ident { expr: [ Symbol( "F", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 112, }, ], ], ), ], line: 111, }, ], [ Ident { expr: [ Symbol( "F", ), Call( [ [ Ident { expr: [ Symbol( "max", ), ], line: 112, }, ], ], ), ], line: 112, }, ], ], ), ], line: 111, }, ], ], ), ], line: 110, }, ], end: 47, }, line: 113, column: 1, }, ], ], line: 113, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "Cstacklevel", ), ], line: 113, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 52, code: [ Return( Some( [ [ Symbol( "0", ), ], ], ), ), ], end: 55, }, line: 114, column: 8, }, ], ], line: 114, column: 8, }, ], end: 213, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 213, code: [ Alter { names: [ Ident { expr: [ Symbol( "showmem", ), ], line: 116, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkmemory", ), Call( [], ), ], line: 117, }, Variable { names: [ ( "total", false, ), ( "numblocks", false, ), ( "maxmem", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 118, }, ], ], line: 119, column: 0, }, Variable { names: [ ( "count", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 119, }, ], ], line: 119, column: 7, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "format", ), Call( [ [ Symbol( "\"\\n ---- total memory: %s (%.0fK), max use: %s, blocks: %d\\n\"", ), ], [ Ident { expr: [ Symbol( "F", ), Call( [ [ Ident { expr: [ Symbol( "total", ), ], line: 122, }, ], ], ), ], line: 121, }, ], [ Ident { expr: [ Symbol( "count", ), ], line: 122, }, ], [ Ident { expr: [ Symbol( "F", ), Call( [ [ Ident { expr: [ Symbol( "maxmem", ), ], line: 122, }, ], ], ), ], line: 122, }, ], [ Ident { expr: [ Symbol( "numblocks", ), ], line: 122, }, ], ], ), ], line: 120, }, ], ], ), ], line: 119, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "format", ), Call( [ [ Symbol( "\"\\t(strings: %d, tables: %d, functions: %d, \"", ), Operator( ( "..", true, ), ), Symbol( "\"\\n\\tudata: %d, threads: %d)\"", ), ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"string\"", ), ], ], ), ], line: 124, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"table\"", ), ], ], ), ], line: 125, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"function\"", ), ], ], ), ], line: 125, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"userdata\"", ), ], ], ), ], line: 125, }, ], [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"thread\"", ), ], ], ), ], line: 126, }, ], ], ), ], line: 123, }, ], ], ), ], line: 122, }, ], end: 85, }, line: 127, column: 1, }, ], ], line: 127, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "Cstacklevel", ), ], line: 127, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 90, code: [ Variable { names: [ ( "_", false, ), ( "_", false, ), ( "ncalls", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "stacklevel", ), Call( [], ), ], line: 130, }, ], ], line: 131, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "ncalls", ), ], line: 131, }, ], ], ), ), ], end: 105, }, line: 132, column: 1, }, ], ], line: 132, column: 1, }, ], end: 319, }, next: None, line: 133, column: 1, }, ), line: 133, column: 1, }, Variable { names: [ ( "Cstack", false, ), ], values: [ [ Ident { expr: [ Symbol( "Cstacklevel", ), Call( [], ), ], line: 136, }, ], ], line: 141, column: 0, }, Function { local: true, name: [ Symbol( "report", ), ], args: [ "n", ], body: CodeBlock { start: 331, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"\\n***** FILE '\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 141, }, Operator( ( "..", true, ), ), Symbol( "\"'*****\"", ), ], ], ), ], line: 141, }, ], end: 340, }, line: 141, column: 15, }, Variable { names: [ ( "olddofile", false, ), ], values: [ [ Ident { expr: [ Symbol( "dofile", ), ], line: 142, }, ], ], line: 143, column: 0, }, Variable { names: [ ( "dofile", false, ), ], values: [ [ Lambda { args: [ "n", "strip", ], body: CodeBlock { start: 353, code: [ Ident { expr: [ Symbol( "showmem", ), Call( [], ), ], line: 144, }, Variable { names: [ ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), Call( [], ), ], line: 145, }, ], ], line: 145, column: 8, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"time: %g (+%g)\"", ), ], [ Ident { expr: [ Symbol( "c", ), ], line: 146, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "initclock", ), ], line: 146, }, ], [ Ident { expr: [ Symbol( "c", ), ], line: 146, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "lastclock", ), ], line: 146, }, ], ], ), ], line: 146, }, ], ], ), ], line: 145, }, Alter { names: [ Ident { expr: [ Symbol( "lastclock", ), ], line: 146, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 147, }, ], ], line: 147, column: 3, }, Ident { expr: [ Symbol( "report", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 148, }, ], ], ), ], line: 147, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 149, }, ], ], ), ], line: 149, }, ], ], ), ], line: 149, }, ], ], line: 150, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "dump", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 150, }, ], [ Ident { expr: [ Symbol( "strip", ), ], line: 150, }, ], ], ), ], line: 150, }, ], ], line: 150, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 150, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 151, }, ], ], ), ], line: 151, }, ], ], ), ], line: 151, }, ], ], line: 152, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 152, }, ], ], ), ), ], end: 423, }, line: 153, column: 1, }, ], ], line: 153, column: 1, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'main.lua'", ), ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"tracegc\"", ), ], ], ), Symbol( ".", ), Symbol( "start", ), Call( [], ), ], line: 155, }, Ident { expr: [ Symbol( "report", ), Call( [ [ Symbol( "\"gc.lua\"", ), ], ], ), ], line: 158, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Symbol( "'gc.lua'", ), ], ], ), ], line: 161, }, ], ], ), ], line: 161, }, ], ], line: 161, column: 10, }, Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 161, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'db.lua'", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'calls.lua'", ), ], ], ), ], line: 165, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "deep", ), ], line: 165, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "deep", ), ], line: 165, }, ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "olddofile", ), Call( [ [ Symbol( "'strings.lua'", ), ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "olddofile", ), Call( [ [ Symbol( "'literals.lua'", ), ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'tpack.lua'", ), ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'attrib.lua'", ), ], ], ), ], line: 169, }, Operator( ( "==", true, ), ), Symbol( "27", ), ], ], ), ], line: 168, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'gengc.lua'", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'locals.lua'", ), ], ], ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'constructs.lua'", ), ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'code.lua'", ), ], [ Symbol( "true", ), ], ], ), ], line: 172, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "_soft", ), ], line: 174, }, ], body: CodeBlock { start: 513, code: [ Ident { expr: [ Symbol( "report", ), Call( [ [ Symbol( "'big.lua'", ), ], ], ), ], line: 175, }, Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "loadfile", ), Call( [ [ Symbol( "'big.lua'", ), ], ], ), ], line: 176, }, ], ], ), ], line: 176, }, ], ], ), ], line: 176, }, ], ], line: 176, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 177, }, ], end: 549, }, next: None, line: 179, column: 1, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'cstack.lua'", ), ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'nextvar.lua'", ), ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'pm.lua'", ), ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'utf8.lua'", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'api.lua'", ), ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'events.lua'", ), ], ], ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'vararg.lua'", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'closure.lua'", ), ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'coroutine.lua'", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'goto.lua'", ), ], [ Symbol( "true", ), ], ], ), ], line: 188, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'errors.lua'", ), ], ], ), ], line: 189, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'math.lua'", ), ], ], ), ], line: 190, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'sort.lua'", ), ], [ Symbol( "true", ), ], ], ), ], line: 191, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'bitwise.lua'", ), ], ], ), ], line: 192, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'verybig.lua'", ), ], [ Symbol( "true", ), ], ], ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 193, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 194, }, Ident { expr: [ Symbol( "dofile", ), Call( [ [ Symbol( "'files.lua'", ), ], ], ), ], line: 194, }, IfStatement { condition: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "msgs", ), ], line: 197, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 639, code: [ Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "concat", ), Call( [ [ Ident { expr: [ Symbol( "msgs", ), ], line: 198, }, ], [ Symbol( "\"\\n \"", ), ], ], ), ], line: 198, }, ], ], line: 198, column: 11, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"#tests not performed:\\n \"", ), ], [ Ident { expr: [ Symbol( "m", ), ], line: 199, }, ], [ Symbol( "\"\\n\"", ), ], ], ), ], line: 198, }, ], end: 659, }, next: None, line: 200, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"(there should be two warnings now)\"", ), ], ], ), ], line: 200, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"@on\"", ), ], ], ), ], line: 202, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"#This is \"", ), ], [ Symbol( "\"an expected\"", ), ], [ Symbol( "\" warning\"", ), ], ], ), ], line: 203, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"@off\"", ), ], ], ), ], line: 204, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"******** THIS WARNING SHOULD NOT APPEAR **********\"", ), ], ], ), ], line: 205, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"******** THIS WARNING ALSO SHOULD NOT APPEAR **********\"", ), ], ], ), ], line: 206, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"@on\"", ), ], ], ), ], line: 207, }, Ident { expr: [ Symbol( "warn", ), Call( [ [ Symbol( "\"#This is\"", ), ], [ Symbol( "\" another one\"", ), ], ], ), ], line: 208, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), ], line: 212, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 209, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 214, }, ], ], line: 214, column: 5, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"%d-bit integers, %d-bit floats\"", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), Call( [ [ Symbol( "\"j\"", ), ], ], ), ], line: 216, }, Operator( ( "*", true, ), ), Symbol( "8", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), Call( [ [ Symbol( "\"n\"", ), ], ], ), ], line: 217, }, Operator( ( "*", true, ), ), Symbol( "8", ), ], ], ), ], line: 216, }, ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "sethook", ), Call( [ [ Lambda { args: [ "a", ], body: CodeBlock { start: 743, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 219, }, ], ], ), ], line: 219, }, Operator( ( "==", true, ), ), Symbol( "'string'", ), ], ], ), ], line: 219, }, ], end: 753, }, line: 219, column: 18, }, ], [ Symbol( "\"cr\"", ), ], ], ), ], line: 217, }, Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "showmem", ), ], line: 219, }, ], values: [ [ Ident { expr: [ Symbol( "showmem", ), ], line: 222, }, ], ], line: 222, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Cstack", ), ], line: 225, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Cstacklevel", ), Call( [], ), ], line: 225, }, ], [ Symbol( "\"should be at the same C-stack level it was when started the tests\"", ), ], ], ), ], line: 222, }, ], end: 939, }, ), Variable { names: [ ( "_G", false, ), ( "showmem", false, ), ( "print", false, ), ( "format", false, ), ( "clock", false, ), ( "time", false, ), ( "difftime", false, ), ( "assert", false, ), ( "open", false, ), ( "warn", false, ), ], values: [ [ Ident { expr: [ Symbol( "_G", ), ], line: 231, }, ], [ Ident { expr: [ Symbol( "showmem", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "print", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "clock", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "time", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "difftime", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "assert", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), ], line: 233, }, ], [ Ident { expr: [ Symbol( "warn", ), ], line: 233, }, ], ], line: 236, column: 0, }, Variable { names: [ ( "fname", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), ], line: 236, }, Operator( ( "and", true, ), ), Symbol( "\"time-debug.txt\"", ), Operator( ( "or", true, ), ), Symbol( "\"time.txt\"", ), ], ], line: 237, column: 0, }, Variable { names: [ ( "lasttime", false, ), ], values: [], line: 237, column: 2, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "usertests", ), ], line: 239, }, ], body: CodeBlock { start: 1003, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "fname", ), ], line: 241, }, ], ], ), ], line: 241, }, ], ], line: 242, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "f", ), ], line: 242, }, ], body: CodeBlock { start: 12, code: [ Alter { names: [ Ident { expr: [ Symbol( "lasttime", ), ], line: 243, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "read", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 243, }, ], ], ), ], line: 243, }, ], ], ), ], line: 243, }, ], ], line: 243, column: 12, }, Ident { expr: [ Symbol( "f", ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 243, }, ], end: 31, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 31, code: [ Alter { names: [ Ident { expr: [ Symbol( "lasttime", ), ], line: 246, }, ], values: [ [ Symbol( "nil", ), ], ], line: 246, column: 3, }, ], end: 35, }, next: None, line: 247, column: 1, }, ), line: 247, column: 1, }, ], end: 1039, }, next: None, line: 248, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'cleaning all!!!!'", ), ], ], ), ], line: 248, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), ], line: 252, }, ], ], ), ], line: 252, }, ], stop: None, initial: None, code: CodeBlock { start: 1051, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Expr( [ Table { data: [ ( Some( [ Symbol( "___Glob", ), ], ), [ Symbol( "1", ), ], ), ( Some( [ Symbol( "tostring", ), ], ), [ Symbol( "1", ), ], ), ], line: 253, column: 12, }, ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 253, }, ], ), Symbol( "]", ), ], line: 253, }, ], body: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 254, }, ], ), Symbol( "]", ), ], line: 254, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 254, }, ], ], line: 254, column: 6, }, ], end: 24, }, next: None, line: 255, column: 1, }, ], end: 1076, }, line: 256, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 256, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 259, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 260, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 261, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 262, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 263, }, Ident { expr: [ Symbol( "showmem", ), Call( [], ), ], line: 264, }, Variable { names: [ ( "clocktime", false, ), ], values: [ [ Ident { expr: [ Symbol( "clock", ), Call( [], ), ], line: 266, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "initclock", ), ], line: 266, }, ], ], line: 266, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "walltime", ), ], line: 266, }, ], values: [ [ Ident { expr: [ Symbol( "difftime", ), Call( [ [ Ident { expr: [ Symbol( "time", ), Call( [], ), ], line: 267, }, ], [ Ident { expr: [ Symbol( "walltime", ), ], line: 267, }, ], ], ), ], line: 267, }, ], ], line: 267, column: 10, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Ident { expr: [ Symbol( "format", ), Call( [ [ Symbol( "\"\\n\\ntotal time: %.2fs (wall time: %gs)\\n\"", ), ], [ Ident { expr: [ Symbol( "clocktime", ), ], line: 269, }, ], [ Ident { expr: [ Symbol( "walltime", ), ], line: 269, }, ], ], ), ], line: 269, }, ], ], ), ], line: 267, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "usertests", ), ], line: 271, }, ], body: CodeBlock { start: 1131, code: [ Alter { names: [ Ident { expr: [ Symbol( "lasttime", ), ], line: 272, }, ], values: [ [ Ident { expr: [ Symbol( "lasttime", ), ], line: 272, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "clocktime", ), ], line: 272, }, ], ], line: 274, column: 0, }, Variable { names: [ ( "diff", false, ), ], values: [ [ Expr( [ Ident { expr: [ Symbol( "clocktime", ), ], line: 274, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "lasttime", ), ], line: 274, }, ], ), Ident { expr: [], line: 274, }, Operator( ( "/", true, ), ), Ident { expr: [ Symbol( "lasttime", ), ], line: 274, }, ], ], line: 275, column: 0, }, Variable { names: [ ( "tolerance", false, ), ], values: [ [ Symbol( "0.05", ), ], ], line: 276, column: 0, }, IfStatement { condition: [ Expr( [ Ident { expr: [ Symbol( "diff", ), ], line: 276, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "tolerance", ), ], line: 276, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "diff", ), ], line: 276, }, Operator( ( "<=", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "tolerance", ), ], line: 276, }, ], ), Ident { expr: [], line: 276, }, ], body: CodeBlock { start: 31, code: [ Ident { expr: [ Symbol( "warn", ), Call( [ [ Ident { expr: [ Symbol( "format", ), Call( [ [ Symbol( "\"#time difference from previous test: %+.1f%%\"", ), ], [ Ident { expr: [ Symbol( "diff", ), ], line: 277, }, Operator( ( "*", true, ), ), Symbol( "100", ), ], ], ), ], line: 277, }, ], ], ), ], line: 277, }, ], end: 43, }, next: None, line: 279, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "open", ), Call( [ [ Ident { expr: [ Symbol( "fname", ), ], line: 280, }, ], [ Symbol( "\"w\"", ), ], ], ), ], line: 280, }, ], ], ), Symbol( ":", ), Symbol( "write", ), Call( [ [ Ident { expr: [ Symbol( "clocktime", ), ], line: 280, }, ], ], ), Symbol( ":", ), Symbol( "close", ), Call( [], ), ], line: 279, }, ], end: 1193, }, next: None, line: 281, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"final OK !!!\"", ), ], ], ), ], line: 281, }, ]