277 lines
7.1 KiB
Plaintext
277 lines
7.1 KiB
Plaintext
program main
|
|
enum Reading
|
|
variant Missing
|
|
variant Value i32
|
|
variant Offset i32
|
|
enum WideReading
|
|
variant Missing
|
|
variant Value i64
|
|
enum RatioReading
|
|
variant Missing
|
|
variant Value f64
|
|
enum FlagReading
|
|
variant Missing
|
|
variant Value bool
|
|
enum LabelReading
|
|
variant Missing
|
|
variant Value string
|
|
struct PayloadRecord
|
|
field reading: Reading
|
|
field wide: WideReading
|
|
field ratio: RatioReading
|
|
field flag: FlagReading
|
|
field label: LabelReading
|
|
fn value(payload: i32) -> Reading
|
|
enum-variant Reading.Value
|
|
var payload
|
|
fn echo_reading(reading: Reading) -> Reading
|
|
var reading
|
|
fn local_reading(payload: i32) -> Reading
|
|
local let reading: Reading
|
|
enum-variant Reading.Value
|
|
var payload
|
|
var reading
|
|
fn call_reading(payload: i32) -> Reading
|
|
call echo_reading
|
|
call local_reading
|
|
var payload
|
|
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 wide_value(payload: i64) -> WideReading
|
|
enum-variant WideReading.Value
|
|
var payload
|
|
fn echo_wide(reading: WideReading) -> WideReading
|
|
var reading
|
|
fn local_wide(payload: i64) -> WideReading
|
|
local let reading: WideReading
|
|
enum-variant WideReading.Value
|
|
var payload
|
|
var reading
|
|
fn call_wide(payload: i64) -> WideReading
|
|
call echo_wide
|
|
call local_wide
|
|
var payload
|
|
fn wide_code(reading: WideReading) -> i64
|
|
match
|
|
subject
|
|
var reading
|
|
arm WideReading.Missing
|
|
i64 0
|
|
arm WideReading.Value payload
|
|
var payload
|
|
fn ratio_value(payload: f64) -> RatioReading
|
|
enum-variant RatioReading.Value
|
|
var payload
|
|
fn ratio_code(reading: RatioReading) -> f64
|
|
match
|
|
subject
|
|
var reading
|
|
arm RatioReading.Missing
|
|
float 0
|
|
arm RatioReading.Value payload
|
|
var payload
|
|
fn flag_value(payload: bool) -> FlagReading
|
|
enum-variant FlagReading.Value
|
|
var payload
|
|
fn flag_code(reading: FlagReading) -> bool
|
|
match
|
|
subject
|
|
var reading
|
|
arm FlagReading.Missing
|
|
bool false
|
|
arm FlagReading.Value payload
|
|
var payload
|
|
fn label_value(payload: string) -> LabelReading
|
|
enum-variant LabelReading.Value
|
|
var payload
|
|
fn echo_label(reading: LabelReading) -> LabelReading
|
|
var reading
|
|
fn local_label(payload: string) -> LabelReading
|
|
local let reading: LabelReading
|
|
enum-variant LabelReading.Value
|
|
var payload
|
|
var reading
|
|
fn call_label(payload: string) -> LabelReading
|
|
call echo_label
|
|
call local_label
|
|
var payload
|
|
fn label_text(reading: LabelReading) -> string
|
|
match
|
|
subject
|
|
var reading
|
|
arm LabelReading.Missing
|
|
string ""
|
|
arm LabelReading.Value payload
|
|
var payload
|
|
fn pack_record(reading: Reading, wide: WideReading, ratio: RatioReading, flag: FlagReading, label: LabelReading) -> PayloadRecord
|
|
construct PayloadRecord
|
|
field reading
|
|
var reading
|
|
field wide
|
|
var wide
|
|
field ratio
|
|
var ratio
|
|
field flag
|
|
var flag
|
|
field label
|
|
var label
|
|
fn make_record() -> PayloadRecord
|
|
call pack_record
|
|
enum-variant Reading.Offset
|
|
int 5
|
|
enum-variant WideReading.Value
|
|
i64 4294967296
|
|
enum-variant RatioReading.Value
|
|
float 3.5
|
|
enum-variant FlagReading.Value
|
|
bool true
|
|
enum-variant LabelReading.Value
|
|
string "hello"
|
|
fn echo_record(record: PayloadRecord) -> PayloadRecord
|
|
var record
|
|
fn local_record() -> PayloadRecord
|
|
local let record: PayloadRecord
|
|
call make_record
|
|
call echo_record
|
|
var record
|
|
fn record_reading_code(record: PayloadRecord) -> i32
|
|
call reading_code
|
|
field-access reading
|
|
var record
|
|
fn record_wide_code(record: PayloadRecord) -> i64
|
|
call wide_code
|
|
field-access wide
|
|
var record
|
|
fn record_ratio_code(record: PayloadRecord) -> f64
|
|
call ratio_code
|
|
field-access ratio
|
|
var record
|
|
fn record_flag_code(record: PayloadRecord) -> bool
|
|
call flag_code
|
|
field-access flag
|
|
var record
|
|
fn record_label_text(record: PayloadRecord) -> string
|
|
call label_text
|
|
field-access label
|
|
var record
|
|
fn main() -> i32
|
|
call record_reading_code
|
|
call local_record
|
|
test "i32 enum constructor equality"
|
|
binary =
|
|
enum-variant Reading.Value
|
|
int 7
|
|
call value
|
|
int 7
|
|
test "i32 enum equality compares payload"
|
|
if
|
|
binary =
|
|
enum-variant Reading.Value
|
|
int 7
|
|
enum-variant Reading.Value
|
|
int 8
|
|
bool false
|
|
bool true
|
|
test "i32 enum payloadless equality"
|
|
binary =
|
|
enum-variant Reading.Missing
|
|
call echo_reading
|
|
enum-variant Reading.Missing
|
|
test "i32 enum local return call flow"
|
|
binary =
|
|
call call_reading
|
|
int 9
|
|
enum-variant Reading.Value
|
|
int 9
|
|
test "i64 enum constructor equality"
|
|
binary =
|
|
enum-variant WideReading.Value
|
|
i64 4294967296
|
|
call wide_value
|
|
i64 4294967296
|
|
test "i64 enum local return call flow"
|
|
binary =
|
|
call call_wide
|
|
i64 4294967297
|
|
enum-variant WideReading.Value
|
|
i64 4294967297
|
|
test "f64 enum constructor equality"
|
|
binary =
|
|
enum-variant RatioReading.Value
|
|
float 3.5
|
|
call ratio_value
|
|
float 3.5
|
|
test "f64 enum equality compares payload"
|
|
if
|
|
binary =
|
|
enum-variant RatioReading.Value
|
|
float 3.5
|
|
enum-variant RatioReading.Value
|
|
float 4.5
|
|
bool false
|
|
bool true
|
|
test "bool enum constructor equality"
|
|
binary =
|
|
enum-variant FlagReading.Value
|
|
bool true
|
|
call flag_value
|
|
bool true
|
|
test "bool enum match value"
|
|
call flag_code
|
|
enum-variant FlagReading.Value
|
|
bool true
|
|
test "string enum constructor equality"
|
|
binary =
|
|
enum-variant LabelReading.Value
|
|
string "hello"
|
|
call label_value
|
|
string "hello"
|
|
test "string enum equality compares payload"
|
|
if
|
|
binary =
|
|
enum-variant LabelReading.Value
|
|
string "left"
|
|
enum-variant LabelReading.Value
|
|
string "right"
|
|
bool false
|
|
bool true
|
|
test "string enum local return call flow"
|
|
binary =
|
|
call call_label
|
|
string "hello"
|
|
enum-variant LabelReading.Value
|
|
string "hello"
|
|
test "struct field enum i32 flow"
|
|
binary =
|
|
call record_reading_code
|
|
call local_record
|
|
int 105
|
|
test "struct field enum i64 flow"
|
|
binary =
|
|
call record_wide_code
|
|
call local_record
|
|
i64 4294967296
|
|
test "struct field enum f64 flow"
|
|
binary =
|
|
call record_ratio_code
|
|
call local_record
|
|
float 3.5
|
|
test "struct field enum bool flow"
|
|
call record_flag_code
|
|
call local_record
|
|
test "struct field enum string flow"
|
|
binary =
|
|
call record_label_text
|
|
call local_record
|
|
string "hello"
|