about summary refs log tree commit diff stats
path: root/059generic_recipe.cc
diff options
context:
space:
mode:
Diffstat (limited to '059generic_recipe.cc')
-rw-r--r--059generic_recipe.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/059generic_recipe.cc b/059generic_recipe.cc
index 64dbf6a1..e31a5d12 100644
--- a/059generic_recipe.cc
+++ b/059generic_recipe.cc
@@ -153,6 +153,12 @@ recipe_ordinal new_variant(recipe_ordinal exemplar, const instruction& inst) {
   map<string, string> mappings;  // weak references
   compute_type_ingredient_mappings(get(Recipe, exemplar), inst, mappings);
   replace_type_ingredients(new_recipe, mappings);
+  // redo all previous transforms in the new specialization, except for non-idempotent ones
+  // including this one in case there are new ambiguous calls in the specialization
+  for (long long int t = 0; t <= new_recipe.transformed_until; ++t) {
+    if (Transform.at(t) == insert_fragments) continue;  // not idempotent
+    (*Transform.at(t))(result);
+  }
   return result;
 }