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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits