Trass3r created this revision. Herald added subscribers: kadircet, arphaman. Herald added a project: All. Trass3r requested review of this revision. Herald added subscribers: cfe-commits, MaskRay, ilya-biryukov. Herald added a project: clang-tools-extra.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D137919 Files: clang-tools-extra/clangd/Protocol.cpp clang-tools-extra/clangd/Protocol.h clang-tools-extra/clangd/refactor/InsertionPoint.h clang-tools-extra/clangd/refactor/Tweak.h clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp clang-tools-extra/clangd/refactor/tweaks/AnnotateHighlightings.cpp clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp clang-tools-extra/clangd/refactor/tweaks/ExpandAutoType.cpp clang-tools-extra/clangd/refactor/tweaks/ExpandMacro.cpp clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp clang-tools-extra/clangd/refactor/tweaks/MemberwiseConstructor.cpp clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp clang-tools-extra/clangd/refactor/tweaks/ObjCMemberwiseInitializer.cpp clang-tools-extra/clangd/refactor/tweaks/PopulateSwitch.cpp clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp clang-tools-extra/clangd/refactor/tweaks/SpecialMembers.cpp clang-tools-extra/clangd/refactor/tweaks/SwapIfBranches.cpp
Index: clang-tools-extra/clangd/refactor/tweaks/SwapIfBranches.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/SwapIfBranches.cpp +++ clang-tools-extra/clangd/refactor/tweaks/SwapIfBranches.cpp @@ -29,7 +29,7 @@ /// ^^^^^^^ ^^^^ /// After: /// if (foo) { continue; } else { return 10; } -class SwapIfBranches : public Tweak { +class SwapIfBranches final : public Tweak { public: const char *id() const final; @@ -37,7 +37,7 @@ Expected<Effect> apply(const Selection &Inputs) override; std::string title() const override { return "Swap if branches"; } llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } bool hidden() const override { return true; } Index: clang-tools-extra/clangd/refactor/tweaks/SpecialMembers.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/SpecialMembers.cpp +++ clang-tools-extra/clangd/refactor/tweaks/SpecialMembers.cpp @@ -84,11 +84,11 @@ // - to understand the implicit behavior // - to avoid relying on the implicit behavior // - as a baseline for explicit modification -class DeclareCopyMove : public Tweak { +class DeclareCopyMove final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } std::string title() const override { return llvm::formatv("Declare implicit {0} members", Index: clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp +++ clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp @@ -29,7 +29,7 @@ /// Currently limited to using namespace directives inside global namespace to /// simplify implementation. Also the namespace must not contain using /// directives. -class RemoveUsingNamespace : public Tweak { +class RemoveUsingNamespace final : public Tweak { public: const char *id() const override; @@ -39,7 +39,7 @@ return "Remove using namespace, re-qualify names instead"; } llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } private: Index: clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp +++ clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp @@ -26,7 +26,7 @@ /// After: /// printf(R"("a" /// b)"); -class RawStringLiteral : public Tweak { +class RawStringLiteral final : public Tweak { public: const char *id() const final; @@ -34,7 +34,7 @@ Expected<Effect> apply(const Selection &Inputs) override; std::string title() const override { return "Convert to raw string"; } llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } private: Index: clang-tools-extra/clangd/refactor/tweaks/PopulateSwitch.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/PopulateSwitch.cpp +++ clang-tools-extra/clangd/refactor/tweaks/PopulateSwitch.cpp @@ -47,7 +47,7 @@ namespace clang { namespace clangd { namespace { -class PopulateSwitch : public Tweak { +class PopulateSwitch final : public Tweak { const char *id() const override; bool prepare(const Selection &Sel) override; Expected<Effect> apply(const Selection &Sel) override; Index: clang-tools-extra/clangd/refactor/tweaks/ObjCMemberwiseInitializer.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/ObjCMemberwiseInitializer.cpp +++ clang-tools-extra/clangd/refactor/tweaks/ObjCMemberwiseInitializer.cpp @@ -170,11 +170,11 @@ /// Generate an initializer for an Objective-C class based on selected /// properties and instance variables. -class ObjCMemberwiseInitializer : public Tweak { +class ObjCMemberwiseInitializer final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } bool prepare(const Selection &Inputs) override; Index: clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp +++ clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp @@ -28,11 +28,11 @@ /// ^^^ /// After: /// NSLocalizedString(@"description", @"") -class ObjCLocalizeStringLiteral : public Tweak { +class ObjCLocalizeStringLiteral final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } bool prepare(const Selection &Inputs) override; Index: clang-tools-extra/clangd/refactor/tweaks/MemberwiseConstructor.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/MemberwiseConstructor.cpp +++ clang-tools-extra/clangd/refactor/tweaks/MemberwiseConstructor.cpp @@ -30,11 +30,11 @@ // S(int x, unique_ptr<double> y) : x(x), y(std::move(y)) {} // // We place the constructor inline, other tweaks are available to outline it. -class MemberwiseConstructor : public Tweak { +class MemberwiseConstructor final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } std::string title() const override { return llvm::formatv("Define constructor"); Index: clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp +++ clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp @@ -483,7 +483,7 @@ /// After: /// auto placeholder = 5 + 4; /// int x = placeholder * 3; -class ExtractVariable : public Tweak { +class ExtractVariable final : public Tweak { public: const char *id() const final; bool prepare(const Selection &Inputs) override; @@ -492,7 +492,7 @@ return "Extract subexpression to variable"; } llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_EXTRACT_KIND; } private: Index: clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp +++ clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp @@ -803,14 +803,14 @@ return ExtractedFunc; } -class ExtractFunction : public Tweak { +class ExtractFunction final : public Tweak { public: const char *id() const final; bool prepare(const Selection &Inputs) override; Expected<Effect> apply(const Selection &Inputs) override; std::string title() const override { return "Extract to function"; } llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_EXTRACT_KIND; } private: Index: clang-tools-extra/clangd/refactor/tweaks/ExpandMacro.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/ExpandMacro.cpp +++ clang-tools-extra/clangd/refactor/tweaks/ExpandMacro.cpp @@ -28,11 +28,11 @@ /// After: /// #define FOO(X) X+X /// 10*a+10*a -class ExpandMacro : public Tweak { +class ExpandMacro final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } bool prepare(const Selection &Inputs) override; Index: clang-tools-extra/clangd/refactor/tweaks/ExpandAutoType.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/ExpandAutoType.cpp +++ clang-tools-extra/clangd/refactor/tweaks/ExpandAutoType.cpp @@ -31,11 +31,11 @@ /// MyClass x = Something(); /// ^^^^^^^ /// FIXME: Handle decltype as well -class ExpandAutoType : public Tweak { +class ExpandAutoType final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } bool prepare(const Selection &Inputs) override; Expected<Effect> apply(const Selection &Inputs) override; Index: clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp +++ clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp @@ -29,7 +29,7 @@ /// CallExpr /// |-DeclRefExpr fcall /// `-StringLiteral "foo" -class DumpAST : public Tweak { +class DumpAST final : public Tweak { public: const char *id() const final; @@ -82,7 +82,7 @@ /// .DeclRefExpr fcall /// BinaryOperator 2 + 2 /// *IntegerLiteral 2 -class ShowSelectionTree : public Tweak { +class ShowSelectionTree final : public Tweak { public: const char *id() const final; @@ -103,7 +103,7 @@ /// Message: /// foo - /// {"containerName":null,"id":"CA2EBE44A1D76D2A","name":"foo","usr":"c:@F@foo#"} -class DumpSymbol : public Tweak { +class DumpSymbol final : public Tweak { const char *id() const final; bool prepare(const Selection &Inputs) override { return true; } Expected<Effect> apply(const Selection &Inputs) override { @@ -131,7 +131,7 @@ /// 0 | int foo /// | [sizeof=4, dsize=4, align=4, /// | nvsize=4, nvalign=4] -class DumpRecordLayout : public Tweak { +class DumpRecordLayout final : public Tweak { public: const char *id() const final; Index: clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp +++ clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp @@ -360,13 +360,13 @@ /// a.cc /// #include "a.h" /// void foo() { return; } -class DefineOutline : public Tweak { +class DefineOutline final : public Tweak { public: const char *id() const override; bool hidden() const override { return false; } llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_MOVE_KIND; } std::string title() const override { return "Move function body to out-of-line"; Index: clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp +++ clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp @@ -383,12 +383,12 @@ /// /// a.cc: /// -class DefineInline : public Tweak { +class DefineInline final : public Tweak { public: const char *id() const final; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_MOVE_KIND; } std::string title() const override { return "Move function body to declaration"; Index: clang-tools-extra/clangd/refactor/tweaks/AnnotateHighlightings.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/AnnotateHighlightings.cpp +++ clang-tools-extra/clangd/refactor/tweaks/AnnotateHighlightings.cpp @@ -21,7 +21,7 @@ /// ^^^^^^^^^^^^^^^^^^^^^ /// After: /// void /* entity.name.function.cpp */ f() { int /* variable.cpp */ abc; } -class AnnotateHighlightings : public Tweak { +class AnnotateHighlightings final : public Tweak { public: const char *id() const final; @@ -29,9 +29,7 @@ Expected<Effect> apply(const Selection &Inputs) override; std::string title() const override { return "Annotate highlighting tokens"; } - llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; - } + llvm::StringLiteral kind() const override { return CodeAction::INFO_KIND; } bool hidden() const override { return true; } }; REGISTER_TWEAK(AnnotateHighlightings) Index: clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp +++ clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp @@ -30,7 +30,7 @@ // Currently this only removes qualifier from under the cursor. In the future, // we should improve this to remove qualifier from all occurrences of this // symbol. -class AddUsing : public Tweak { +class AddUsing final : public Tweak { public: const char *id() const override; @@ -38,7 +38,7 @@ Expected<Effect> apply(const Selection &Inputs) override; std::string title() const override; llvm::StringLiteral kind() const override { - return CodeAction::REFACTOR_KIND; + return CodeAction::REFACTOR_REWRITE_KIND; } private: Index: clang-tools-extra/clangd/refactor/Tweak.h =================================================================== --- clang-tools-extra/clangd/refactor/Tweak.h +++ clang-tools-extra/clangd/refactor/Tweak.h @@ -37,7 +37,7 @@ /// An interface base for small context-sensitive refactoring actions. /// To implement a new tweak use the following pattern in a .cpp file: -/// class MyTweak : public Tweak { +/// class MyTweak final : public Tweak { /// public: /// const char* id() const override final; // defined by REGISTER_TWEAK. /// // implement other methods here. Index: clang-tools-extra/clangd/refactor/InsertionPoint.h =================================================================== --- clang-tools-extra/clangd/refactor/InsertionPoint.h +++ clang-tools-extra/clangd/refactor/InsertionPoint.h @@ -6,6 +6,9 @@ // //===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_REFACTOR_INSERTIONPOINT_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_REFACTOR_INSERTIONPOINT_H + #include "clang/AST/DeclCXX.h" #include "clang/Basic/Specifiers.h" #include "clang/Tooling/Core/Replacement.h" @@ -51,3 +54,5 @@ } // namespace clangd } // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_REFACTOR_INSERTIONPOINT_H Index: clang-tools-extra/clangd/Protocol.h =================================================================== --- clang-tools-extra/clangd/Protocol.h +++ clang-tools-extra/clangd/Protocol.h @@ -1007,6 +1007,12 @@ llvm::Optional<std::string> kind; const static llvm::StringLiteral QUICKFIX_KIND; const static llvm::StringLiteral REFACTOR_KIND; + const static llvm::StringLiteral REFACTOR_EXTRACT_KIND; + const static llvm::StringLiteral REFACTOR_INLINE_KIND; + const static llvm::StringLiteral REFACTOR_MOVE_KIND; + const static llvm::StringLiteral REFACTOR_REWRITE_KIND; + const static llvm::StringLiteral SOURCE_KIND; + const static llvm::StringLiteral SOURCE_ORGANIZE_IMPORTS_KIND; const static llvm::StringLiteral INFO_KIND; /// The diagnostics that this code action resolves. Index: clang-tools-extra/clangd/Protocol.cpp =================================================================== --- clang-tools-extra/clangd/Protocol.cpp +++ clang-tools-extra/clangd/Protocol.cpp @@ -799,6 +799,12 @@ const llvm::StringLiteral CodeAction::QUICKFIX_KIND = "quickfix"; const llvm::StringLiteral CodeAction::REFACTOR_KIND = "refactor"; +const llvm::StringLiteral CodeAction::REFACTOR_EXTRACT_KIND = "refactor.extract"; +const llvm::StringLiteral CodeAction::REFACTOR_INLINE_KIND = "refactor.inline"; +const llvm::StringLiteral CodeAction::REFACTOR_MOVE_KIND = "refactor.move"; +const llvm::StringLiteral CodeAction::REFACTOR_REWRITE_KIND = "refactor.rewrite"; +const llvm::StringLiteral CodeAction::SOURCE_KIND = "source"; +const llvm::StringLiteral CodeAction::SOURCE_ORGANIZE_IMPORTS_KIND = "source.organizeImports"; const llvm::StringLiteral CodeAction::INFO_KIND = "info"; llvm::json::Value toJSON(const CodeAction &CA) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits