90 lines
2.1 KiB
Plaintext
90 lines
2.1 KiB
Plaintext
program main
|
|
enum Reading
|
|
variant Missing
|
|
variant Value i32
|
|
variant Offset i32
|
|
fn missing() -> Reading
|
|
enum-variant Reading.Missing
|
|
fn value(payload: i32) -> Reading
|
|
enum-variant Reading.Value
|
|
var payload
|
|
fn echo(reading: Reading) -> Reading
|
|
var reading
|
|
fn local_reading(payload: i32) -> Reading
|
|
local let reading: Reading
|
|
enum-variant Reading.Value
|
|
var payload
|
|
var reading
|
|
fn same_reading(left: Reading, right: Reading) -> bool
|
|
binary =
|
|
var left
|
|
var right
|
|
fn reading_code(reading: Reading) -> i32
|
|
match
|
|
subject
|
|
var reading
|
|
arm Reading.Missing
|
|
int 0
|
|
arm Reading.Value payload
|
|
var payload
|
|
arm Reading.Offset payload
|
|
binary +
|
|
var payload
|
|
int 100
|
|
fn call_flow(payload: i32) -> Reading
|
|
call echo
|
|
call local_reading
|
|
var payload
|
|
fn main() -> i32
|
|
call reading_code
|
|
call call_flow
|
|
int 42
|
|
test "enum payload constructor equality"
|
|
binary =
|
|
enum-variant Reading.Value
|
|
int 7
|
|
call value
|
|
int 7
|
|
test "enum payload equality compares payload"
|
|
if
|
|
binary =
|
|
enum-variant Reading.Value
|
|
int 7
|
|
enum-variant Reading.Value
|
|
int 8
|
|
bool false
|
|
bool true
|
|
test "enum payloadless equality"
|
|
binary =
|
|
enum-variant Reading.Missing
|
|
call missing
|
|
test "enum payload local return call flow"
|
|
binary =
|
|
call call_flow
|
|
int 9
|
|
enum-variant Reading.Value
|
|
int 9
|
|
test "enum payload parameter equality"
|
|
call same_reading
|
|
call value
|
|
int 11
|
|
enum-variant Reading.Value
|
|
int 11
|
|
test "enum payload match missing"
|
|
binary =
|
|
call reading_code
|
|
enum-variant Reading.Missing
|
|
int 0
|
|
test "enum payload match value"
|
|
binary =
|
|
call reading_code
|
|
enum-variant Reading.Value
|
|
int 12
|
|
int 12
|
|
test "enum payload match offset"
|
|
binary =
|
|
call reading_code
|
|
enum-variant Reading.Offset
|
|
int 5
|
|
int 105
|