468 lines
11 KiB
Plaintext
468 lines
11 KiB
Plaintext
program main
|
|
enum Signal
|
|
variant Red
|
|
variant Yellow
|
|
variant Green
|
|
enum Reading
|
|
variant Missing
|
|
variant Value i32
|
|
struct Point
|
|
field x: i32
|
|
field y: i32
|
|
struct PrimitiveRecord
|
|
field id: i32
|
|
field active: bool
|
|
field label: string
|
|
struct NumericRecord
|
|
field wide: i64
|
|
field ratio: f64
|
|
struct TaggedReading
|
|
field status: Signal
|
|
field reading: Reading
|
|
fn make_point(x: i32, y: i32) -> Point
|
|
construct Point
|
|
field x
|
|
var x
|
|
field y
|
|
var y
|
|
fn make_primitive_record(id: i32, label: string) -> PrimitiveRecord
|
|
construct PrimitiveRecord
|
|
field id
|
|
var id
|
|
field active
|
|
binary =
|
|
var id
|
|
int 7
|
|
field label
|
|
var label
|
|
fn make_numeric_record(wide: i64, ratio: f64) -> NumericRecord
|
|
construct NumericRecord
|
|
field wide
|
|
var wide
|
|
field ratio
|
|
var ratio
|
|
fn make_tagged(status: Signal, reading: Reading) -> TaggedReading
|
|
construct TaggedReading
|
|
field status
|
|
var status
|
|
field reading
|
|
var reading
|
|
fn vec_i32_pair(base: i32) -> (vec i32)
|
|
local let values: (vec i32)
|
|
call std.vec.i32.empty
|
|
local let first: (vec i32)
|
|
call std.vec.i32.append
|
|
var values
|
|
var base
|
|
call std.vec.i32.append
|
|
var first
|
|
binary +
|
|
var base
|
|
int 1
|
|
fn vec_i64_pair(base: i64) -> (vec i64)
|
|
local let values: (vec i64)
|
|
call std.vec.i64.empty
|
|
local let first: (vec i64)
|
|
call std.vec.i64.append
|
|
var values
|
|
var base
|
|
call std.vec.i64.append
|
|
var first
|
|
binary +
|
|
var base
|
|
i64 1
|
|
fn vec_f64_pair(base: f64) -> (vec f64)
|
|
local let values: (vec f64)
|
|
call std.vec.f64.empty
|
|
local let first: (vec f64)
|
|
call std.vec.f64.append
|
|
var values
|
|
var base
|
|
call std.vec.f64.append
|
|
var first
|
|
binary +
|
|
var base
|
|
float 1
|
|
fn vec_bool_pair(first: bool, second: bool) -> (vec bool)
|
|
local let values: (vec bool)
|
|
call std.vec.bool.empty
|
|
local let left: (vec bool)
|
|
call std.vec.bool.append
|
|
var values
|
|
var first
|
|
call std.vec.bool.append
|
|
var left
|
|
var second
|
|
fn vec_string_pair(first: string, second: string) -> (vec string)
|
|
local let values: (vec string)
|
|
call std.vec.string.empty
|
|
local let left: (vec string)
|
|
call std.vec.string.append
|
|
var values
|
|
var first
|
|
call std.vec.string.append
|
|
var left
|
|
var second
|
|
fn swap_string(first: string, second: string) -> string
|
|
local var current: string
|
|
var first
|
|
set current
|
|
var second
|
|
var current
|
|
fn vec_i32_local_value() -> i32
|
|
local var current: (vec i32)
|
|
call vec_i32_pair
|
|
int 10
|
|
set current
|
|
call vec_i32_pair
|
|
int 40
|
|
call std.vec.i32.index
|
|
var current
|
|
int 1
|
|
fn vec_i64_local_value() -> i64
|
|
local var current: (vec i64)
|
|
call vec_i64_pair
|
|
i64 10
|
|
set current
|
|
call vec_i64_pair
|
|
i64 40
|
|
call std.vec.i64.index
|
|
var current
|
|
int 1
|
|
fn vec_f64_local_value() -> f64
|
|
local var current: (vec f64)
|
|
call vec_f64_pair
|
|
float 10
|
|
set current
|
|
call vec_f64_pair
|
|
float 40
|
|
call std.vec.f64.index
|
|
var current
|
|
int 1
|
|
fn vec_bool_local_value() -> bool
|
|
local var current: (vec bool)
|
|
call vec_bool_pair
|
|
bool true
|
|
bool false
|
|
set current
|
|
call vec_bool_pair
|
|
bool false
|
|
bool true
|
|
call std.vec.bool.index
|
|
var current
|
|
int 1
|
|
fn vec_string_local_value() -> string
|
|
local var current: (vec string)
|
|
call vec_string_pair
|
|
string "oak"
|
|
string "elm"
|
|
set current
|
|
call vec_string_pair
|
|
string "pine"
|
|
string "slovo"
|
|
call std.vec.string.index
|
|
var current
|
|
int 1
|
|
fn option_i32_local_value() -> i32
|
|
local var current: (option i32)
|
|
none i32
|
|
set current
|
|
some i32
|
|
int 42
|
|
match
|
|
subject
|
|
var current
|
|
arm some payload
|
|
var payload
|
|
arm none
|
|
int 0
|
|
fn option_i64_local_value() -> i64
|
|
local var current: (option i64)
|
|
none i64
|
|
set current
|
|
some i64
|
|
i64 42000000000
|
|
match
|
|
subject
|
|
var current
|
|
arm some payload
|
|
var payload
|
|
arm none
|
|
i64 0
|
|
fn option_f64_local_value() -> f64
|
|
local var current: (option f64)
|
|
none f64
|
|
set current
|
|
some f64
|
|
float 42.5
|
|
match
|
|
subject
|
|
var current
|
|
arm some payload
|
|
var payload
|
|
arm none
|
|
float 0
|
|
fn option_bool_local_value() -> bool
|
|
local var current: (option bool)
|
|
none bool
|
|
set current
|
|
some bool
|
|
bool true
|
|
match
|
|
subject
|
|
var current
|
|
arm some payload
|
|
var payload
|
|
arm none
|
|
bool false
|
|
fn option_string_local_value() -> string
|
|
local var current: (option string)
|
|
none string
|
|
set current
|
|
some string
|
|
string "branch"
|
|
match
|
|
subject
|
|
var current
|
|
arm some payload
|
|
var payload
|
|
arm none
|
|
string "fallback"
|
|
fn result_i32_local_value() -> i32
|
|
local var current: (result i32 i32)
|
|
err i32 i32
|
|
int 7
|
|
set current
|
|
ok i32 i32
|
|
int 42
|
|
match
|
|
subject
|
|
var current
|
|
arm ok payload
|
|
var payload
|
|
arm err code
|
|
var code
|
|
fn result_i64_local_value() -> i64
|
|
local var current: (result i64 i32)
|
|
err i64 i32
|
|
int 7
|
|
set current
|
|
ok i64 i32
|
|
i64 42000000000
|
|
match
|
|
subject
|
|
var current
|
|
arm ok payload
|
|
var payload
|
|
arm err code
|
|
i64 0
|
|
fn result_f64_local_value() -> f64
|
|
local var current: (result f64 i32)
|
|
err f64 i32
|
|
int 7
|
|
set current
|
|
ok f64 i32
|
|
float 42.5
|
|
match
|
|
subject
|
|
var current
|
|
arm ok payload
|
|
var payload
|
|
arm err code
|
|
float 0
|
|
fn result_bool_local_value() -> bool
|
|
local var current: (result bool i32)
|
|
err bool i32
|
|
int 7
|
|
set current
|
|
ok bool i32
|
|
bool true
|
|
match
|
|
subject
|
|
var current
|
|
arm ok payload
|
|
var payload
|
|
arm err code
|
|
bool false
|
|
fn result_string_local_value() -> string
|
|
local var current: (result string i32)
|
|
err string i32
|
|
int 7
|
|
set current
|
|
ok string i32
|
|
string "slovo"
|
|
match
|
|
subject
|
|
var current
|
|
arm ok payload
|
|
var payload
|
|
arm err code
|
|
string "fallback"
|
|
fn point_local_sum() -> i32
|
|
local var current: Point
|
|
call make_point
|
|
int 1
|
|
int 2
|
|
set current
|
|
call make_point
|
|
int 20
|
|
int 22
|
|
binary +
|
|
field-access x
|
|
var current
|
|
field-access y
|
|
var current
|
|
fn primitive_record_local_label() -> string
|
|
local var current: PrimitiveRecord
|
|
call make_primitive_record
|
|
int 3
|
|
string "alpha"
|
|
set current
|
|
call make_primitive_record
|
|
int 7
|
|
string "beta"
|
|
field-access label
|
|
var current
|
|
fn numeric_record_local_ratio() -> f64
|
|
local var current: NumericRecord
|
|
call make_numeric_record
|
|
i64 10
|
|
float 1
|
|
set current
|
|
call make_numeric_record
|
|
i64 20
|
|
float 3.5
|
|
field-access ratio
|
|
var current
|
|
fn signal_local_code() -> i32
|
|
local var current: Signal
|
|
enum-variant Signal.Red
|
|
set current
|
|
enum-variant Signal.Green
|
|
match
|
|
subject
|
|
var current
|
|
arm Signal.Red
|
|
int 1
|
|
arm Signal.Yellow
|
|
int 2
|
|
arm Signal.Green
|
|
int 3
|
|
fn reading_local_code() -> i32
|
|
local var current: Reading
|
|
enum-variant Reading.Missing
|
|
set current
|
|
enum-variant Reading.Value
|
|
int 42
|
|
match
|
|
subject
|
|
var current
|
|
arm Reading.Missing
|
|
int 0
|
|
arm Reading.Value payload
|
|
var payload
|
|
fn tagged_local_code() -> i32
|
|
local var current: TaggedReading
|
|
call make_tagged
|
|
enum-variant Signal.Yellow
|
|
enum-variant Reading.Missing
|
|
set current
|
|
call make_tagged
|
|
enum-variant Signal.Green
|
|
enum-variant Reading.Value
|
|
int 42
|
|
match
|
|
subject
|
|
field-access reading
|
|
var current
|
|
arm Reading.Missing
|
|
int 0
|
|
arm Reading.Value payload
|
|
var payload
|
|
fn main() -> i32
|
|
call tagged_local_code
|
|
test "mutable string local set works"
|
|
binary =
|
|
call swap_string
|
|
string "oak"
|
|
string "slovo"
|
|
string "slovo"
|
|
test "mutable vec i32 local set works"
|
|
binary =
|
|
call vec_i32_local_value
|
|
int 41
|
|
test "mutable vec i64 local set works"
|
|
binary =
|
|
call vec_i64_local_value
|
|
i64 41
|
|
test "mutable vec f64 local set works"
|
|
binary =
|
|
call vec_f64_local_value
|
|
float 41
|
|
test "mutable vec bool local set works"
|
|
call vec_bool_local_value
|
|
test "mutable vec string local set works"
|
|
binary =
|
|
call vec_string_local_value
|
|
string "slovo"
|
|
test "mutable option i32 local set works"
|
|
binary =
|
|
call option_i32_local_value
|
|
int 42
|
|
test "mutable option i64 local set works"
|
|
binary =
|
|
call option_i64_local_value
|
|
i64 42000000000
|
|
test "mutable option f64 local set works"
|
|
binary =
|
|
call option_f64_local_value
|
|
float 42.5
|
|
test "mutable option bool local set works"
|
|
call option_bool_local_value
|
|
test "mutable option string local set works"
|
|
binary =
|
|
call option_string_local_value
|
|
string "branch"
|
|
test "mutable result i32 local set works"
|
|
binary =
|
|
call result_i32_local_value
|
|
int 42
|
|
test "mutable result i64 local set works"
|
|
binary =
|
|
call result_i64_local_value
|
|
i64 42000000000
|
|
test "mutable result f64 local set works"
|
|
binary =
|
|
call result_f64_local_value
|
|
float 42.5
|
|
test "mutable result bool local set works"
|
|
call result_bool_local_value
|
|
test "mutable result string local set works"
|
|
binary =
|
|
call result_string_local_value
|
|
string "slovo"
|
|
test "mutable plain struct local set works"
|
|
binary =
|
|
call point_local_sum
|
|
int 42
|
|
test "mutable primitive struct local set works"
|
|
binary =
|
|
call primitive_record_local_label
|
|
string "beta"
|
|
test "mutable numeric struct local set works"
|
|
binary =
|
|
call numeric_record_local_ratio
|
|
float 3.5
|
|
test "mutable payloadless enum local set works"
|
|
binary =
|
|
call signal_local_code
|
|
int 3
|
|
test "mutable payload enum local set works"
|
|
binary =
|
|
call reading_local_code
|
|
int 42
|
|
test "mutable enum struct local set works"
|
|
binary =
|
|
call tagged_local_code
|
|
int 42
|