125 lines
2.7 KiB
Plaintext
125 lines
2.7 KiB
Plaintext
program main
|
|
struct ArrayRecord
|
|
field ints: (array i32 3)
|
|
field wides: (array i64 2)
|
|
field ratios: (array f64 3)
|
|
field flags: (array bool 3)
|
|
field words: (array string 3)
|
|
fn make_record(base: i32, head: string) -> ArrayRecord
|
|
construct ArrayRecord
|
|
field ints
|
|
array i32
|
|
var base
|
|
binary +
|
|
var base
|
|
int 1
|
|
binary +
|
|
var base
|
|
int 2
|
|
field wides
|
|
array i64
|
|
i64 40
|
|
i64 41
|
|
field ratios
|
|
array f64
|
|
float 1.5
|
|
float 2.5
|
|
float 3.5
|
|
field flags
|
|
array bool
|
|
bool false
|
|
bool true
|
|
bool true
|
|
field words
|
|
array string
|
|
var head
|
|
string "moon"
|
|
string "star"
|
|
fn echo_record(record: ArrayRecord) -> ArrayRecord
|
|
var record
|
|
fn local_record(head: string) -> ArrayRecord
|
|
local let record: ArrayRecord
|
|
call make_record
|
|
int 7
|
|
var head
|
|
call echo_record
|
|
var record
|
|
fn int_at(record: ArrayRecord, i: i32) -> i32
|
|
index
|
|
field-access ints
|
|
var record
|
|
var i
|
|
fn wide_at(record: ArrayRecord, i: i32) -> i64
|
|
index
|
|
field-access wides
|
|
var record
|
|
var i
|
|
fn ratio_at(record: ArrayRecord, i: i32) -> f64
|
|
index
|
|
field-access ratios
|
|
var record
|
|
var i
|
|
fn flag_at(record: ArrayRecord, i: i32) -> bool
|
|
index
|
|
field-access flags
|
|
var record
|
|
var i
|
|
fn word_at(record: ArrayRecord, i: i32) -> string
|
|
index
|
|
field-access words
|
|
var record
|
|
var i
|
|
fn main() -> i32
|
|
if
|
|
call flag_at
|
|
call local_record
|
|
string "sun"
|
|
int 2
|
|
int 0
|
|
int 1
|
|
test "struct array i32 field access"
|
|
binary =
|
|
call int_at
|
|
call make_record
|
|
int 7
|
|
string "sun"
|
|
int 2
|
|
int 9
|
|
test "struct array i64 field access"
|
|
binary =
|
|
call wide_at
|
|
call make_record
|
|
int 7
|
|
string "sun"
|
|
int 1
|
|
i64 41
|
|
test "struct array f64 field access"
|
|
binary =
|
|
call ratio_at
|
|
call make_record
|
|
int 7
|
|
string "sun"
|
|
int 2
|
|
float 3.5
|
|
test "struct array bool field access"
|
|
call flag_at
|
|
call make_record
|
|
int 7
|
|
string "sun"
|
|
int 1
|
|
test "struct array string field access"
|
|
binary =
|
|
call word_at
|
|
call make_record
|
|
int 7
|
|
string "sun"
|
|
int 1
|
|
string "moon"
|
|
test "struct array local param return call flow"
|
|
binary =
|
|
call word_at
|
|
call local_record
|
|
string "sun"
|
|
int 0
|
|
string "sun"
|