diff options
Diffstat (limited to '059generic_recipe.cc')
-rw-r--r-- | 059generic_recipe.cc | 6 |
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; } |