This patch implements a couple of functions that were described in my RFC from last week that’s available at http://lists.llvm.org/pipermail/cfe-dev/2017-July/054831.html. This patch adds the following pieces: apply function, requiredSelection function, and the selection::SourceSelectionRange constraint.
This code will be used as a base to start moving the functionality and tests for clang-rename over to clang-refactor.
Code in this file is a bit hard to follow, especially with so many classes and template magics :P
Is it possible to split them into smaller modules, and ideally with more detailed documentation for each?
It seems to me that the following logics could live in their own headers: