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

149 lines
3.4 KiB
Plaintext

program main
enum PacketState
variant Missing
variant Live Packet
variant Cached Packet
struct Packet
field values: (array i32 3)
field labels: (array string 2)
field flags: (array bool 2)
fn make_packet(base: i32, head: string) -> Packet
construct Packet
field values
array i32
var base
binary +
var base
int 1
binary +
var base
int 2
field labels
array string
var head
string "tail"
field flags
array bool
bool false
bool true
fn live(packet: Packet) -> PacketState
enum-variant PacketState.Live
var packet
fn cached(packet: Packet) -> PacketState
enum-variant PacketState.Cached
var packet
fn echo_state(state: PacketState) -> PacketState
var state
fn local_state(base: i32, head: string) -> PacketState
local let state: PacketState
enum-variant PacketState.Live
call make_packet
var base
var head
var state
fn call_state(base: i32, head: string) -> PacketState
call echo_state
call cached
call make_packet
var base
var head
fn state_value(state: PacketState, i: i32) -> i32
match
subject
var state
arm PacketState.Missing
int 0
arm PacketState.Live payload
index
field-access values
var payload
var i
arm PacketState.Cached payload
index
field-access values
var payload
var i
fn state_label(state: PacketState, i: i32) -> string
match
subject
var state
arm PacketState.Missing
string ""
arm PacketState.Live payload
index
field-access labels
var payload
var i
arm PacketState.Cached payload
index
field-access labels
var payload
var i
fn state_flag(state: PacketState, i: i32) -> bool
match
subject
var state
arm PacketState.Missing
bool false
arm PacketState.Live payload
index
field-access flags
var payload
var i
arm PacketState.Cached payload
index
field-access flags
var payload
var i
fn main() -> i32
call state_value
call call_state
int 7
string "sun"
int 2
test "struct payload missing arm"
binary =
call state_value
enum-variant PacketState.Missing
int 0
int 0
test "struct payload live constructor flow"
binary =
call state_value
call live
call make_packet
int 7
string "sun"
int 2
int 9
test "struct payload cached param return call flow"
binary =
call state_value
call call_state
int 7
string "sun"
int 1
int 8
test "struct payload string array field access"
binary =
call state_label
call call_state
int 7
string "sun"
int 0
string "sun"
test "struct payload bool array field access"
call state_flag
call call_state
int 7
string "sun"
int 1
test "struct payload local return flow"
binary =
call state_label
call local_state
int 9
string "orb"
int 1
string "tail"