49 lines
927 B
Plaintext
49 lines
927 B
Plaintext
program main
|
|
struct Point
|
|
field x: i32
|
|
field y: i32
|
|
fn make_point(x: i32, y: i32) -> Point
|
|
construct Point
|
|
field x
|
|
var x
|
|
field y
|
|
var y
|
|
fn point_x(p: Point) -> i32
|
|
field-access x
|
|
var p
|
|
fn point_sum(p: Point) -> i32
|
|
binary +
|
|
field-access x
|
|
var p
|
|
field-access y
|
|
var p
|
|
fn local_point_sum() -> i32
|
|
local let p: Point
|
|
call make_point
|
|
int 20
|
|
int 22
|
|
call point_sum
|
|
var p
|
|
fn main() -> i32
|
|
call local_point_sum
|
|
test "struct local value flow"
|
|
binary =
|
|
call local_point_sum
|
|
int 42
|
|
test "struct parameter value flow"
|
|
binary =
|
|
call point_x
|
|
call make_point
|
|
int 7
|
|
int 9
|
|
int 7
|
|
test "stored struct field access"
|
|
local let p: Point
|
|
call make_point
|
|
int 3
|
|
int 4
|
|
binary =
|
|
field-access y
|
|
var p
|
|
int 4
|