// #failed: resolve Vals :: struct {a:int;b:int;} vv0: Vals = {1, 2}; vv1: Vals = {1}; vv2: Vals = {a = 1}; vv3: Vals = {a = 1, b = 2}; vv4: Vals = {}; v0 := :Vals {1, 2}; v1 := :Vals {1}; v2 := :Vals {a = 1}; v3 := :Vals {a = 1, b = 2}; v4 := :Vals {}; // #error: too many struct initializers, expected less then 2 got instead 3 e0 := :Vals {1, 2, 3}; // #error: too many struct initializers, expected less then 2 got instead 3 e1 := :Vals {a = 1, b = 2, c = 3}; // #error: no matching declaration with name 'c' in type 'Vals' e2 := :Vals {c = 3}; // #error: mixing named and positional arguments is illegal e3 := :Vals {a = 2, 2}; // #error: mixing named and positional arguments is illegal e4 := :Vals {b = 2, 2}; // #error: mixing named and positional arguments is illegal e5 := :Vals {c = 2, 2}; Node :: struct { l: *Node; r: *Node; i: int; } // #error: cannot assign, can assign only const integer equal to 0, variable type: '*Node' expression type: 'UntypedInt' n0: Node = {i = 10, l = &:Node{1, 2, 3}}; // this is legal, do we do something about this? a: int; // #error: cannot assign, types require explicit cast, variable type: '*Node' expression type: '*int' ne0: Node = {i = 10, l = &:Node{&a}}; // #error: too many struct initializers, expected less then 3 got instead 4 ne1: Node = {i = 10, l = &:Node{1, 2, 3, 4}}; // #error: no matching declaration with name 'c' in type 'Node' ne2: Node = {i = 10, l = &:Node{c = 2}}; // #error: mixing named and positional arguments is illegal ne3: Node = {i = 10, l = &:Node{l = 0, r = 0, 2}};