public void Program05()

in Iris/FrontEndTest/SamplePrograms.cs [400:526]


        public void Program05()
        {
            string input =
@"
program LineInfoTest;

var
    i : integer;
    a : array[0..9] of integer;

begin
    for i := 0 to 10 do
        a[i] := 0;

    if i = 0 then
        a[0] := 0
    else if i = 1 then
        a[1] := 1
    else
        a[2] := 1;

    i := 9;
    repeat
        a[i] := i;
        i := i - 1;
    until i < 0;
end.
";
            string output = TestHelpers.TestCompileProgram(input, true);
            string expected = FixupBaseline(
@"
.assembly SYSTEM-ASSEMBLIES-HERE { }
.assembly extern IrisRuntime { }
.assembly LineInfoTest { }
.class public LineInfoTest
{
   .field public static int32 i
   .field public static int32[] a
   .method public hidebysig static void $.main() cil managed
   {
      .entrypoint
      .language '{3456107b-a1f4-4d47-8e18-7cf2c54559ae}', '{5e176682-93da-497a-a5f0-f1aee5e18cce}', '{5a869d0b-6611-11d3-bd2a-0000f80849bd}'
      .line 8,8 : 1,6 'FakeFile.iris'
      nop
      ldc.i4.s 10
      newarr int32
      stsfld int32[] LineInfoTest::a
      .line 9,9 : 5,24 ''
      ldc.i4.0
      stsfld int32 LineInfoTest::i
L0:
      ldsfld int32 LineInfoTest::i
      ldc.i4.s 10
      bgt L1
      .line 10,10 : 9,18 ''
      ldsfld int32[] LineInfoTest::a
      ldsfld int32 LineInfoTest::i
      ldc.i4.0
      stelem.i4
      .line 9,9 : 5,24 ''
      ldsfld int32 LineInfoTest::i
      ldc.i4.1
      add
      stsfld int32 LineInfoTest::i
      br L0
L1:
      .line 12,12 : 5,18 ''
      ldsfld int32 LineInfoTest::i
      ldc.i4.0
      bne.un L2
      .line 13,13 : 9,18 ''
      ldsfld int32[] LineInfoTest::a
      ldc.i4.0
      ldc.i4.0
      stelem.i4
      br L3
L2:
      .line 14,14 : 5,23 ''
      ldsfld int32 LineInfoTest::i
      ldc.i4.1
      bne.un L4
      .line 15,15 : 9,18 ''
      ldsfld int32[] LineInfoTest::a
      ldc.i4.1
      ldc.i4.1
      stelem.i4
      br L5
L4:
      .line 16,16 : 5,9 ''
      nop
      .line 17,17 : 9,18 ''
      ldsfld int32[] LineInfoTest::a
      ldc.i4.2
      ldc.i4.1
      stelem.i4
      .line 19,19 : 5,11 ''
L5:
L3:
      ldc.i4.s 9
      stsfld int32 LineInfoTest::i
L6:
      .line 20,20 : 5,11 ''
      nop
      .line 21,21 : 9,18 ''
      ldsfld int32[] LineInfoTest::a
      ldsfld int32 LineInfoTest::i
      dup
      stelem.i4
      .line 22,22 : 9,19 ''
      ldsfld int32 LineInfoTest::i
      ldc.i4.1
      sub
      stsfld int32 LineInfoTest::i
      .line 23,23 : 5,10 ''
      nop
      ldsfld int32 LineInfoTest::i
      ldc.i4.0
      bge L6
      .line 24,24 : 1,4 ''
      nop
      ret
   }
}
");

            Assert.AreEqual(expected, output);
        }