lemonlang 0.0.4

an experimental, modern, purely safe, programming language.
fn compute r0: u32, r1: u32 -> u32
l0: add r0, r1 -> r2
l1: cmp_gt r2, 100 -> r3
    jmp_if r3, l2, l3
l2: sub r2, 50 -> r4
    free r2
    ret r4
l3: ret r2

fn main(): u32 = {
  l0: r0 = own 42
      r1 = own 58
      r2 = call compute r0, r1
      free r0
      free r1
      ret r2
}


struct Point
  field r0: i38
  field r1: i38
  field r2: i38
  field r3: i38


fn Point.new r0: i38, r1: i38, r2: i38, r3: i38 -> Point
l0: own r0 -> r4
l1: own r1 -> r5
l2: own r2 -> r6
l3: own r3 -> r7
l4: struct Point r4
l5: store_field r4, r0, r5
l6: store_field r4, r1, r6
l7: store_field r4, r2, r7
l8: ret r4

fn Point.x r0: Point -> i38
l0: load_field r0, r0, r1
l1: ret r1

fn Point.y r0: Point -> i38
l0: load_field r0, r1, r2
l1: ret r2

fn Point.z r0: Point -> i38
l0: load_field r0, r2, r3
l1: ret r3

fn Point.set_x r0: Point, r1: i38 -> Point
l0: load_field r0, r0, r2
l1: store_field r0, r1, r2