about summary refs log tree commit diff stats
path: root/026assert.cc
blob: 74e854968eae38009b52dd60fe472c2ca65a2bb7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
:(scenario assert)
% Hide_warnings = true;  // '%' lines insert arbitrary C code into tests before calling 'run' with the lines below. Must be immediately after :(scenario) line.
recipe main [
  assert 0:literal, [this is an assert in mu]
]
+warn: this is an assert in mu

:(before "End Primitive Recipe Declarations")
ASSERT,
:(before "End Primitive Recipe Numbers")
Recipe_number["assert"] = ASSERT;
:(before "End Primitive Recipe Implementations")
case ASSERT: {
  assert(SIZE(ingredients) == 2);
  assert(scalar(ingredients.at(0)));
  if (!ingredients.at(0).at(0)) {
    assert(isa_literal(current_instruction().ingredients.at(1)));
    raise << current_instruction().ingredients.at(1).name << '\n' << die();
  }
  break;
}
cn0: checking arg ((12 literal)) cn0: checking oarg ((6 integer-address)) maybe-add: ((6 integer-address)) cn0: (((7 integer)) <- ((length)) ((6 integer-boolean-pair-array-address) (deref))) nil nil cn0: checking arg ((6 integer-boolean-pair-array-address) (deref)) maybe-add: ((6 integer-boolean-pair-array-address) (deref)) cn0: checking oarg ((7 integer)) maybe-add: ((7 integer)) cn1: (((10 integer)) <- ((copy)) ((30 literal))) cn1: (((default-space space-address)) <- ((copy)) ((10 literal))) cn1: (((1 integer)) <- ((copy)) ((2 literal))) cn1: (((2 integer)) <- ((copy)) ((23 literal))) cn1: (((3 boolean)) <- ((copy)) ((nil literal))) cn1: (((4 integer)) <- ((copy)) ((24 literal))) cn1: (((5 boolean)) <- ((copy)) ((t literal))) cn1: (((6 integer-address)) <- ((copy)) ((12 literal))) cn1: (((7 integer)) <- ((length)) ((6 integer-boolean-pair-array-address) (deref))) schedule: main run: main 0: (((10 integer)) <- ((copy)) ((30 literal))) run: main 0: 30 => ((10 integer)) mem: ((10 integer)): 10 <= 30 run: main 1: (((default-space space-address)) <- ((copy)) ((10 literal))) run: main 1: 10 => ((default-space space-address)) run: main 2: (((1 integer)) <- ((copy)) ((2 literal))) run: main 2: 2 => ((1 integer)) mem: ((1 integer)): 12 <= 2 run: main 3: (((2 integer)) <- ((copy)) ((23 literal))) run: main 3: 23 => ((2 integer)) mem: ((2 integer)): 13 <= 23 run: main 4: (((3 boolean)) <- ((copy)) ((nil literal))) run: main 4: nil => ((3 boolean)) mem: ((3 boolean)): 14 <= nil run: main 5: (((4 integer)) <- ((copy)) ((24 literal))) run: main 5: 24 => ((4 integer)) mem: ((4 integer)): 15 <= 24 run: main 6: (((5 boolean)) <- ((copy)) ((t literal))) run: main 6: t => ((5 boolean)) mem: ((5 boolean)): 16 <= t run: main 7: (((6 integer-address)) <- ((copy)) ((12 literal))) run: main 7: 12 => ((6 integer-address)) mem: ((6 integer-address)): 17 <= 12 run: main 8: (((7 integer)) <- ((length)) ((6 integer-boolean-pair-array-address) (deref))) array-len: ((6 integer-boolean-pair-array-address) (deref)) mem: ((12 integer) (raw)) => 2 run: main 8: 2 => ((7 integer)) mem: ((7 integer)): 18 <= 2 schedule: done with routine nil