[PATCH] D74036: [clangd] don't rename on protobuf symbols.

Haojian Wu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 5 03:42:21 PST 2020


hokein created this revision.
hokein added a reviewer: kadircet.
Herald added subscribers: usaxena95, arphaman, jkorous, MaskRay, ilya-biryukov.
Herald added a project: clang.

Repository:
  rG LLVM Github Monorepo

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
@@ -97,6 +97,9 @@
 }
 
 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"


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74036.242549.patch
Type: text/x-patch
Size: 1579 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200205/b1b928f2/attachment.bin>


More information about the cfe-commits mailing list