added tests for assignable and memory
This commit is contained in:
27
tests/sprint2/test/test_carls_mistake.alpha
Normal file
27
tests/sprint2/test/test_carls_mistake.alpha
Normal file
@ -0,0 +1,27 @@
|
||||
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;
|
||||
}
|
10
tests/sprint2/test/test_invalid_recop.alpha
Normal file
10
tests/sprint2/test/test_invalid_recop.alpha
Normal file
@ -0,0 +1,10 @@
|
||||
type rec: [integer: x; integer: y]
|
||||
|
||||
entry(arg) := {
|
||||
[rec: w]
|
||||
w := reserve w;
|
||||
w.x := 1;
|
||||
w.y := 2;
|
||||
w.z := 3;
|
||||
return 0;
|
||||
}
|
8
tests/sprint2/test/test_invalid_release.alpha
Normal file
8
tests/sprint2/test/test_invalid_release.alpha
Normal file
@ -0,0 +1,8 @@
|
||||
type rec: [integer: x; integer: y]
|
||||
|
||||
entry(arg) := {
|
||||
[rec: w]
|
||||
w := reserve w;
|
||||
w := release (w);
|
||||
return 0;
|
||||
}
|
12
tests/sprint2/test/test_valid_assignable_and_mem.alpha
Normal file
12
tests/sprint2/test/test_valid_assignable_and_mem.alpha
Normal file
@ -0,0 +1,12 @@
|
||||
type rec: [integer: x; integer: y]
|
||||
type T2: rec -> integer
|
||||
|
||||
entry(arg) := {
|
||||
[rec: w]
|
||||
w := reserve w;
|
||||
w.x := 1;
|
||||
w.y := 2;
|
||||
w := release w;
|
||||
return 0;
|
||||
|
||||
}
|
Reference in New Issue
Block a user