Files
compiler-the-translators/tests/sprint1/test/sp1_real_alpha_file1.alpha
2025-05-04 16:05:13 -04:00

30 lines
827 B
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(* TEST: [-tok] *)
type rec: [integer: x; integer: y]
type T1: integer -> integer
type T2: rec -> integer
function foo : T1
function bar1 : T2
function bar2 : T2
foo(x) := {
return x * x;
}
bar1(a) := {
return a.x * a.y;
}
bar2 as (r,s) := {
return r * s;
}
entry(arg) := {
[ integer: result ; rec: w]
result := foo(5);
w := reserve(w); (* see types.alpha reserve returns a value of type address,
which can be assigned to array and record variables
*)
w.x := 5;
w.y := 7;
result := bar1(w); (* pass w (a rec type value) to bar1 *)
result := bar2(5,7); (* implicitly build a rec type value, assign 5 and 7 to fields x and y, but call them r and s *)
return 0;
}