blob: 2f6d4453ab1f8c80a2ebaa1d4dafa10ee99b7764 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
default Order dec
$include <flow.sail>
$include <exception_basic.sail>
val eq = { lem: "eq", _: "eq_anything" } : forall ('a : Type). ('a, 'a) -> bool
overload operator == = {eq}
val neq : forall ('a : Type). ('a, 'a) -> bool
overload operator != = {neq}
overload ~ = {not_bool}
function neq(x, y) = ~(eq(x, y))
struct S = {
field1: int,
field2: bitvector(8, dec)
}
val "print" : string -> unit
val main : unit -> unit effect {escape}
function main() = {
let s : S = struct {
field1 = 4,
field2 = 0xFF
};
assert(s == s, "1");
assert(~(s == { s with field2 = 0xAB }), "2");
assert(s != { s with field1 = 5}, "3");
assert(s == { s with field2 = 0xFF });
assert({ s with field1 = 0} == {s with field1 = 0});
print("ok\n")
}
|