[PATCH] D24192: [clang-refactor] introducing clang-refactor
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 7 03:54:50 PDT 2016
alexfh added a comment.
Kirill, first, thank you for working on this!
As discussed offline, the RefactoringModule interface should explicitly define:
- separation of execution stages for each check:
1. preparation or execution planning - should figure out the set of affected translation units and what should be done for each of them
2. processing of affected translation units - ideally, this should be done in parallel, separate process per TU, and the interface should not prevent this
3. application of replacements or error reporting, if stage 2 detected that execution of refactoring is not possible - looks like this is not refactoring-specific and can be done by the clang-refactor framework
- state transferred between stages (since they should allow for independent execution, potentially in multiple processes, so data should be in a serializable form)
- data and facilities available to each stage (e.g. cross-reference index, AST of a certain translation unit, ability to register PPCallbacks, interface to pass data to the next stage, report results or errors)
- basic interfaces for the facilities mentioned above.
A failure to define these aspects would complicate introduction of multi-TU support and require significant changes to refactoring tools to follow a stricter interface.
More information about the cfe-commits