diff options
Diffstat (limited to 'cpp/026assert.cc')
-rw-r--r-- | cpp/026assert.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/cpp/026assert.cc b/cpp/026assert.cc new file mode 100644 index 00000000..785db1f5 --- /dev/null +++ b/cpp/026assert.cc @@ -0,0 +1,20 @@ +:(scenario assert) +% Hide_warnings = true; +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: { + trace("run") << "ingredient 0 is " << current_instruction().ingredients[0].name; + vector<int> arg0 = read_memory(current_instruction().ingredients[0]); + assert(arg0.size() == 1); + if (arg0[0] == 0) + raise << current_instruction().ingredients[1].name << '\n'; + break; +} |