[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 mailing list