[clang-tools-extra] 3197873 - [clangd] Do not offer "Add using" tweak in header files.
Sam McCall via cfe-commits
cfe-commits at lists.llvm.org
Wed May 6 06:51:12 PDT 2020
Author: Adam Czachorowski
Date: 2020-05-06T15:50:54+02:00
New Revision: 319787315dd65f05aea562760cf57ac486bd2812
URL: https://github.com/llvm/llvm-project/commit/319787315dd65f05aea562760cf57ac486bd2812
DIFF: https://github.com/llvm/llvm-project/commit/319787315dd65f05aea562760cf57ac486bd2812.diff
LOG: [clangd] Do not offer "Add using" tweak in header files.
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D79488
Added:
Modified:
clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp
clang-tools-extra/clangd/unittests/TweakTests.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp b/clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp
index 836ac9ac57ab..f5eee85193ce 100644
--- a/clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp
+++ b/clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp
@@ -175,6 +175,12 @@ findInsertionPoint(const Tweak::Selection &Inputs,
bool AddUsing::prepare(const Selection &Inputs) {
auto &SM = Inputs.AST->getSourceManager();
+
+ // Do not suggest "using" in header files. That way madness lies.
+ if (isHeaderFile(SM.getFileEntryForID(SM.getMainFileID())->getName(),
+ Inputs.AST->getLangOpts()))
+ return false;
+
auto *Node = Inputs.ASTSelection.commonAncestor();
if (Node == nullptr)
return false;
diff --git a/clang-tools-extra/clangd/unittests/TweakTests.cpp b/clang-tools-extra/clangd/unittests/TweakTests.cpp
index b93cca23e6b6..e85d2624d265 100644
--- a/clang-tools-extra/clangd/unittests/TweakTests.cpp
+++ b/clang-tools-extra/clangd/unittests/TweakTests.cpp
@@ -2463,6 +2463,13 @@ class cc {
// test that we don't crash.
EXPECT_UNAVAILABLE(Header +
"template<typename TT> using foo = one::tt<T^T>;");
+
+ // Check that we do not trigger in header files.
+ FileName = "test.h";
+ ExtraArgs.push_back("-xc++-header"); // .h file is treated a C by default.
+ EXPECT_UNAVAILABLE(Header + "void fun() { one::two::f^f(); }");
+ FileName = "test.hpp";
+ EXPECT_UNAVAILABLE(Header + "void fun() { one::two::f^f(); }");
}
TEST_F(AddUsingTest, Apply) {
More information about the cfe-commits
mailing list