66 lines
948 B
Plaintext
66 lines
948 B
Plaintext
|
|
ValidProc :: proc(): int {return 1;}
|
|
ProcPointer: proc(): int = ValidProc;
|
|
|
|
ProcT :: typedef proc(): int; @weak
|
|
ProcP: ProcT;
|
|
|
|
main :: proc(): int {
|
|
ProcPointer = ValidProc;
|
|
ProcPointer = nil;
|
|
|
|
ProcP = ValidProc;
|
|
ProcP = nil;
|
|
|
|
v: *void;
|
|
ProcP = v;
|
|
ProcPointer = v;
|
|
|
|
ProcP = nil;
|
|
|
|
ProcPointer = ValidProc;
|
|
value := ProcPointer(); @unused
|
|
|
|
ProcP = ValidProc;
|
|
ProcP();
|
|
|
|
v = ProcPointer;
|
|
ProcP = ProcPointer;
|
|
vv := :*void(ProcPointer);
|
|
|
|
pv := :ProcT(vv); @unused
|
|
|
|
pv2 := :proc(): int(vv); @unused
|
|
|
|
a: *int;
|
|
b := :ProcT(a); @unused
|
|
|
|
c := &ProcP; @unused
|
|
|
|
return 0;
|
|
}
|
|
|
|
FP :: typedef proc(i: int = 10);
|
|
|
|
Thing :: struct {
|
|
fp: FP;
|
|
fp2: proc(i: int);
|
|
}
|
|
|
|
glob0: FP;
|
|
glob1: proc(j: int);
|
|
|
|
Another :: proc() {
|
|
thing: Thing;
|
|
thing.fp();
|
|
thing.fp2(10);
|
|
|
|
var0: FP;
|
|
var1: proc(j: int);
|
|
|
|
var0();
|
|
var1(j = 10);
|
|
|
|
glob0();
|
|
glob1(j = 10);
|
|
} |