slovo/tests/enum-payload-direct-scalars.surface.lower
2026-05-22 08:38:43 +02:00

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"