55 lines
1.1 KiB
Plaintext
55 lines
1.1 KiB
Plaintext
import "libc";
|
|
|
|
Node :: struct {
|
|
i: int;
|
|
l: *Node;
|
|
r: *Node;
|
|
}
|
|
|
|
v: int;
|
|
thing :: proc(a:int @unused, b:int @unused, c:int @unused) {}
|
|
thingp :: proc(): *int {return &v;}
|
|
|
|
default_args :: proc(a: int = 10 @unused, b: int = 10 @unused): int {return 0;}
|
|
vargs_proc :: proc(a: int @unused, ...) {}
|
|
|
|
// v1 := default_args(v0, v0); // @todo: make error
|
|
// v0 := default_args(1,2);
|
|
main :: proc(): int {
|
|
node: Node = {
|
|
i = 1,
|
|
l = &:Node{
|
|
i = 2,
|
|
},
|
|
r = &:Node{
|
|
i = 3,
|
|
l = &:Node{
|
|
i = 4,
|
|
}
|
|
}
|
|
};
|
|
|
|
default_args();
|
|
default_args(a = 1);
|
|
default_args(b = 2);
|
|
default_args(1, 2);
|
|
default_args(a = 1, b = 2);
|
|
default_args(1, b = 2);
|
|
|
|
vargs_proc(1, 2, 3, 4);
|
|
vargs_proc(1);
|
|
|
|
assert(node.i == 1);
|
|
assert(node.l.i == 2);
|
|
assert(node.r.i == 3);
|
|
assert(node.r.l.i == 4);
|
|
|
|
:Node{2}.i = 2;
|
|
assert(:Node{2}.i == 2);
|
|
thing(1,2,3);
|
|
assert(thingp()[0] == 0);
|
|
thingp()[0] = 0;
|
|
*thingp() = 0;
|
|
|
|
return 0;
|
|
} |