nilang 0.4.1

A scripting language interpreter for Advent of Code
Documentation
========= FILE ./src/runtime/tests/fixtures/forloop_nested/forloop_nested.ir.actual ========
fn2 () {
block0:
  LOAD_UPVAL i_0
  t1 = 0
  n_0 = i_0[t1]
  t5 = i_0[t1]
  LOAD_UPVAL self_0
  t7 =  # self_0
  t8 = t5 < t7
  jnt t8 block3
  next block1

block1:
  t10 = i_0[t1]
  t11 = 1
  t12 = t10 + t11
  i_0[t1] = t12
  t14 = self_0[n_0]
  RETURN t14

block3:
  t15 = #iter_end
  RETURN t15

}
fn1 (self_0) {
block0:
  t1 = NEW_LIST
  t2 = 0
  t1 << t2
  t5 = fn2
  STORE_UPVAL t5, t1
  STORE_UPVAL t5, self_0
  RETURN t5

}
MAIN () {
block0:
  t0 = #list
  t1 = #iter
  t2 = fn1
  patch_0 = #patch
  STORE_ARG t0
  STORE_ARG t1
  STORE_ARG t2
  t4 = CALL patch_0
  t5 = NEW_LIST
  t6 = NEW_LIST
  t7 = 1
  t6 << t7
  t9 = 2
  t6 << t9
  t11 = 3
  t6 << t11
  t5 << t6
  t14 = NEW_LIST
  t15 = 4
  t14 << t15
  t17 = 5
  t14 << t17
  t19 = 6
  t14 << t19
  t5 << t14
  t22 = NEW_LIST
  t23 = 7
  t22 << t23
  t25 = 8
  t22 << t25
  t27 = 9
  t22 << t27
  t5 << t22
  t32 = t5[t1]
  t33 = CALL t32
  next block1

block1:
  row_0 = CALL t33
  t35 = #iter_end
  t36 = row_0 == t35
  jit t36 block6
  next block2

block2:
  t38 = row_0[t1]
  t39 = CALL t38
  next block3

block3:
  cell_0 = CALL t39
  t42 = cell_0 == t35
  jit t42 block5
  next block4

block4:
  PRINT cell_0
  jump block3

block5:
  jump block1

block6:
  t45 = null
  RETURN t45

}