test: prove package initialization semantics
This commit is contained in:
@@ -49,6 +49,15 @@ struct row { const char *src, *expect; };
|
||||
|
||||
static const struct row rows[] = {
|
||||
{ "fn main() void = {};", "ok" },
|
||||
{ "fn init() void = {}; fn init() void = {};", "ok" },
|
||||
{ "fn init(x: i32) void = {};", "func init must have no arguments and no return values" },
|
||||
{ "fn init() i32 = { return 1; };", "func init must have no arguments and no return values" },
|
||||
{ "fn init() void;", "func init must have a body" },
|
||||
{ "export fn init() void = {};", "func init cannot be exported" },
|
||||
{ "fn init() void = {}; fn f() void = { init(); };", "undefined: init" },
|
||||
{ "fn make() i32 = { return 7; }; let state: i32 = make();", "ok" },
|
||||
{ "fn left() i32 = { return right; }; let first: i32 = left(); let right: i32 = 3;", "ok" },
|
||||
{ "fn readb() i32 = { return b; }; let a: i32 = readb(); let b: i32 = a;", "initialization cycle for a" },
|
||||
{ "fn id(x: i32) i32 = { return x; };", "ok" },
|
||||
{ "fn add(a: i32, b: i32) i32 = { return a + b; };", "ok" },
|
||||
{ "def MAX: i32 = 4096;", "ok" },
|
||||
|
||||
Reference in New Issue
Block a user