This release is largely centered around a performance concern that recipes were mutating the AST in ways that didn't cause the eventually rendered source to be different, but were causing additional refactoring cycles to run because some object like a List
of AST elements was changing object references from cycle to cycle. There are two main additions:
- Allow recipe to indicate that it alone shouldn't be the source of another cycle (see
Recipe#causesAnotherCycle
) RecipeTest
now always (with the default parameters) runs 2 cycles and checks that a recipe is done making referentially mutating changes to the AST after 1. These parameters are configurable withcycles
andexpectedCyclesToComplete
, respectively.