Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[refactor] Describe refactorings in the operation classes
This commit changes the way that the refactoring operation classes are structured: - Users have to call `initiate` instead of constructing an instance of the class. The `initiate` is now supposed to have custom initiation logic, and you don't need to subclass the builtin requirements. - A new `describe` function returns a structure with the id, title and the description of the refactoring operation. The refactoring action classes are now placed into one common place in RefactoringActions.cpp instead of being separate. Differential Revision: https://reviews.llvm.org/D38985 llvm-svn: 316780
- Loading branch information
Showing
10 changed files
with
242 additions
and
164 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
//===--- Extract.h - Clang refactoring library ----------------------------===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef LLVM_CLANG_TOOLING_REFACTOR_EXTRACT_EXTRACT_H | ||
#define LLVM_CLANG_TOOLING_REFACTOR_EXTRACT_EXTRACT_H | ||
|
||
#include "clang/Tooling/Refactoring/ASTSelection.h" | ||
#include "clang/Tooling/Refactoring/RefactoringActionRules.h" | ||
|
||
namespace clang { | ||
namespace tooling { | ||
|
||
/// An "Extract Function" refactoring moves code into a new function that's | ||
/// then called from the place where the original code was. | ||
class ExtractFunction final : public SourceChangeRefactoringRule { | ||
public: | ||
/// Initiates the extract function refactoring operation. | ||
/// | ||
/// \param Code The selected set of statements. | ||
/// \param DeclName The name name of the extract function. If None, | ||
/// "extracted" is used. | ||
static Expected<ExtractFunction> initiate(RefactoringRuleContext &Context, | ||
CodeRangeASTSelection Code, | ||
Optional<std::string> DeclName); | ||
|
||
static const RefactoringDescriptor &describe(); | ||
|
||
private: | ||
ExtractFunction(CodeRangeASTSelection Code, Optional<std::string> DeclName) | ||
: Code(std::move(Code)), | ||
DeclName(DeclName ? std::move(*DeclName) : "extracted") {} | ||
|
||
Expected<AtomicChanges> | ||
createSourceReplacements(RefactoringRuleContext &Context) override; | ||
|
||
CodeRangeASTSelection Code; | ||
|
||
// FIXME: Account for naming collisions: | ||
// - error when name is specified by user. | ||
// - rename to "extractedN" when name is implicit. | ||
std::string DeclName; | ||
}; | ||
|
||
} // end namespace tooling | ||
} // end namespace clang | ||
|
||
#endif // LLVM_CLANG_TOOLING_REFACTOR_EXTRACT_EXTRACT_H |
8 changes: 0 additions & 8 deletions
8
clang/include/clang/Tooling/Refactoring/RefactoringActionRegistry.def
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.