94 lines
3.0 KiB
Plaintext
94 lines
3.0 KiB
Plaintext
program main
|
|
enum Status
|
|
variant Ready
|
|
variant Blocked
|
|
enum Reading
|
|
variant Missing
|
|
variant Value i32
|
|
struct TaggedReading
|
|
field status: Status
|
|
field reading: Reading
|
|
fn make_tagged(status: Status, reading: Reading) -> TaggedReading
|
|
construct TaggedReading : TaggedReading
|
|
field status
|
|
var status : Status
|
|
field reading
|
|
var reading : Reading
|
|
fn ready_value(payload: i32) -> TaggedReading
|
|
call make_tagged : TaggedReading
|
|
enum-variant Status.Ready #0 : Status
|
|
enum-variant Reading.Value #1 payload : Reading
|
|
var payload : i32
|
|
fn missing_blocked() -> TaggedReading
|
|
call make_tagged : TaggedReading
|
|
enum-variant Status.Blocked #1 : Status
|
|
enum-variant Reading.Missing #0 : Reading
|
|
fn echo_tagged(tagged: TaggedReading) -> TaggedReading
|
|
var tagged : TaggedReading
|
|
fn local_tagged(payload: i32) -> TaggedReading
|
|
local let tagged : unit
|
|
call ready_value : TaggedReading
|
|
var payload : i32
|
|
call echo_tagged : TaggedReading
|
|
var tagged : TaggedReading
|
|
fn status_of(tagged: TaggedReading) -> Status
|
|
field-access status : Status
|
|
var tagged : TaggedReading
|
|
fn reading_of(tagged: TaggedReading) -> Reading
|
|
field-access reading : Reading
|
|
var tagged : TaggedReading
|
|
fn is_ready(tagged: TaggedReading) -> bool
|
|
binary = : bool
|
|
field-access status : Status
|
|
var tagged : TaggedReading
|
|
enum-variant Status.Ready #0 : Status
|
|
fn reading_matches(tagged: TaggedReading, reading: Reading) -> bool
|
|
binary = : bool
|
|
field-access reading : Reading
|
|
var tagged : TaggedReading
|
|
var reading : Reading
|
|
fn reading_code(tagged: TaggedReading) -> i32
|
|
match : i32
|
|
subject
|
|
field-access reading : Reading
|
|
var tagged : TaggedReading
|
|
arm Reading.Missing
|
|
int 0 : i32
|
|
arm Reading.Value payload
|
|
var payload : i32
|
|
fn main() -> i32
|
|
call reading_code : i32
|
|
call local_tagged : TaggedReading
|
|
int 42 : i32
|
|
test "enum struct field payloadless equality"
|
|
binary = : bool
|
|
call status_of : Status
|
|
call missing_blocked : TaggedReading
|
|
enum-variant Status.Blocked #1 : Status
|
|
test "enum struct field unary payload equality"
|
|
call reading_matches : bool
|
|
call ready_value : TaggedReading
|
|
int 7 : i32
|
|
enum-variant Reading.Value #1 payload : Reading
|
|
int 7 : i32
|
|
test "enum struct field access return"
|
|
binary = : bool
|
|
call reading_of : Reading
|
|
call missing_blocked : TaggedReading
|
|
enum-variant Reading.Missing #0 : Reading
|
|
test "enum struct field local param return call flow"
|
|
binary = : bool
|
|
call reading_code : i32
|
|
call local_tagged : TaggedReading
|
|
int 9 : i32
|
|
int 9 : i32
|
|
test "enum struct field match missing"
|
|
binary = : bool
|
|
call reading_code : i32
|
|
call missing_blocked : TaggedReading
|
|
int 0 : i32
|
|
test "enum struct field status predicate"
|
|
call is_ready : bool
|
|
call ready_value : TaggedReading
|
|
int 11 : i32
|