slovo/tests/primitive-struct-fields.surface.lower
2026-05-22 08:38:43 +02:00

100 lines
2.5 KiB
Plaintext

program main
struct PrimitiveRecord
field id: i32
field active: bool
field label: string
fn make_record(id: i32, label: string) -> PrimitiveRecord
construct PrimitiveRecord
field id
var id
field active
binary =
var id
int 7
field label
var label
fn expected_record() -> PrimitiveRecord
call make_record
int 7
string "alpha"
fn inactive_record() -> PrimitiveRecord
construct PrimitiveRecord
field id
int 3
field active
bool false
field label
string "beta"
fn echo_record(record: PrimitiveRecord) -> PrimitiveRecord
var record
fn local_record(label: string) -> PrimitiveRecord
local let record: PrimitiveRecord
call make_record
int 7
var label
call echo_record
var record
fn record_id(record: PrimitiveRecord) -> i32
field-access id
var record
fn record_active(record: PrimitiveRecord) -> bool
field-access active
var record
fn record_label(record: PrimitiveRecord) -> string
field-access label
var record
fn label_matches(record: PrimitiveRecord, label: string) -> bool
binary =
field-access label
var record
var label
fn active_score(record: PrimitiveRecord) -> i32
if
field-access active
var record
field-access id
var record
int 0
fn label_len(record: PrimitiveRecord) -> i32
call std.string.len
field-access label
var record
fn main() -> i32
call active_score
call local_record
string "alpha"
test "primitive struct i32 field access"
binary =
call record_id
call expected_record
int 7
test "primitive struct bool field predicate"
call record_active
call expected_record
test "primitive struct bool field false branch"
binary =
call active_score
call inactive_record
int 0
test "primitive struct string field equality"
call label_matches
call expected_record
string "alpha"
test "primitive struct string field length"
binary =
call label_len
call expected_record
int 5
test "primitive struct local param return call flow"
binary =
call active_score
call local_record
string "alpha"
int 7
test "primitive struct string field access return"
binary =
call record_label
call local_record
string "alpha"
string "alpha"