hokein updated this revision to Diff 242892.
hokein added a comment.
address comments
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D74036/new/
https://reviews.llvm.org/D74036
Files:
clang-tools-extra/clangd/refactor/Rename.cpp
clang-tools-extra/clangd/unittests/RenameTests.cpp
Index: clang-tools-extra/clangd/unittests/RenameTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/RenameTests.cpp
+++ clang-tools-extra/clangd/unittests/RenameTests.cpp
@@ -630,6 +630,21 @@
expectedResult(Code, NewName));
}
+TEST(RenameTest, ProtobufSymbolIsBlacklisted) {
+ Annotations Code("Prot^obuf buf;");
+ auto TU = TestTU::withCode(Code.code());
+ TU.HeaderCode =
+ R"cpp(// Generated by the protocol buffer compiler. DO NOT EDIT!
+ class Protobuf {};
+ )cpp";
+ TU.HeaderFilename = "protobuf.pb.h";
+ auto AST = TU.build();
+ auto Results = rename({Code.point(), "newName", AST, testPath(TU.Filename)});
+ EXPECT_FALSE(Results);
+ EXPECT_THAT(llvm::toString(Results.takeError()),
+ testing::HasSubstr("not a supported kind"));
+}
+
TEST(CrossFileRenameTests, DirtyBuffer) {
Annotations FooCode("class [[Foo]] {};");
std::string FooPath = testPath("foo.cc");
Index: clang-tools-extra/clangd/refactor/Rename.cpp
===================================================================
--- clang-tools-extra/clangd/refactor/Rename.cpp
+++ clang-tools-extra/clangd/refactor/Rename.cpp
@@ -96,7 +96,13 @@
return Result;
}
+// By default, we blacklist C++ standard symbols and protobuf symbols as rename
+// these symbols would change system/generated files which are unlikely to be
+// modified.
bool isBlacklisted(const NamedDecl &RenameDecl) {
+ if (isProtoFile(RenameDecl.getLocation(),
+ RenameDecl.getASTContext().getSourceManager()))
+ return true;
static const auto *StdSymbols = new llvm::DenseSet<llvm::StringRef>({
#define SYMBOL(Name, NameSpace, Header) {#NameSpace #Name},
#include "StdSymbolMap.inc"
Index: clang-tools-extra/clangd/unittests/RenameTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/RenameTests.cpp
+++ clang-tools-extra/clangd/unittests/RenameTests.cpp
@@ -630,6 +630,21 @@
expectedResult(Code, NewName));
}
+TEST(RenameTest, ProtobufSymbolIsBlacklisted) {
+ Annotations Code("Prot^obuf buf;");
+ auto TU = TestTU::withCode(Code.code());
+ TU.HeaderCode =
+ R"cpp(// Generated by the protocol buffer compiler. DO NOT EDIT!
+ class Protobuf {};
+ )cpp";
+ TU.HeaderFilename = "protobuf.pb.h";
+ auto AST = TU.build();
+ auto Results = rename({Code.point(), "newName", AST, testPath(TU.Filename)});
+ EXPECT_FALSE(Results);
+ EXPECT_THAT(llvm::toString(Results.takeError()),
+ testing::HasSubstr("not a supported kind"));
+}
+
TEST(CrossFileRenameTests, DirtyBuffer) {
Annotations FooCode("class [[Foo]] {};");
std::string FooPath = testPath("foo.cc");
Index: clang-tools-extra/clangd/refactor/Rename.cpp
===================================================================
--- clang-tools-extra/clangd/refactor/Rename.cpp
+++ clang-tools-extra/clangd/refactor/Rename.cpp
@@ -96,7 +96,13 @@
return Result;
}
+// By default, we blacklist C++ standard symbols and protobuf symbols as rename
+// these symbols would change system/generated files which are unlikely to be
+// modified.
bool isBlacklisted(const NamedDecl &RenameDecl) {
+ if (isProtoFile(RenameDecl.getLocation(),
+ RenameDecl.getASTContext().getSourceManager()))
+ return true;
static const auto *StdSymbols = new llvm::DenseSet<llvm::StringRef>({
#define SYMBOL(Name, NameSpace, Header) {#NameSpace #Name},
#include "StdSymbolMap.inc"
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits