1
2
3
4 :(before "End Instruction Modifying Transforms")
5 Transform.push_back(update_instruction_operations);
6
7 :(code)
8 void update_instruction_operations(const recipe_ordinal r) {
9 trace(9991, "transform") << "--- compute instruction operations for recipe " << get(Recipe, r).name << end();
10 recipe& caller = get(Recipe, r);
11
12 for (int index = 0; index < SIZE(caller.steps); ++index) {
13 ¦ instruction& inst = caller.steps.at(index);
14 ¦ if (inst.is_label) continue;
15 ¦ if (!contains_key(Recipe_ordinal, inst.name)) {
16 ¦ ¦ raise << maybe(caller.name) << "instruction '" << inst.name << "' has no recipe in '" << to_original_string(inst) << "'\n" << end();
17 ¦ ¦ continue;
18 ¦ }
19 ¦ inst.operation = get(Recipe_ordinal, inst.name);
20 ¦
21 }
22 }
23
24
25 string maybe(string s) {
26 return s + ": ";
27 }
28
29 :(scenarios transform)
30 :(scenario missing_arrow)
31 % Hide_errors = true;
32 def main [
33 1:number , copy 0
34 ]
35 +error: main: instruction '1:number' has no recipe in '1:number copy, 0'