Refactoring = Substitution + Rewriting: Towards Generic, Language-Independent Refactorings
Eelco Visser’s work has always encouraged stepping back from the particular to look at the underlying, conceptual problems.
In that spirit we present an approach to describing refactorings that abstracts away from particular refactorings to classes of similar transformations, and presents an implementation of these that works by substitution and subsequent rewriting.
Substitution is language-independent under this approach, while the rewrites embody language- specific aspects. Intriguingly, it also goes back to work on API migration by Huiqing Li and the first author, and sets refactoring in that general context.