[clang-tools-extra] 3c2cb8e - [clangd] Disable IncludeCleaner for ObjC

Kadir Cetinkaya via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 22 02:33:33 PDT 2022


Author: Kadir Cetinkaya
Date: 2022-08-22T11:28:06+02:00
New Revision: 3c2cb8e2f09b4ed48c83bda2551de82f2ded1d1d

URL: https://github.com/llvm/llvm-project/commit/3c2cb8e2f09b4ed48c83bda2551de82f2ded1d1d
DIFF: https://github.com/llvm/llvm-project/commit/3c2cb8e2f09b4ed48c83bda2551de82f2ded1d1d.diff

LOG: [clangd] Disable IncludeCleaner for ObjC

Added: 
    

Modified: 
    clang-tools-extra/clangd/IncludeCleaner.cpp
    clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/clangd/IncludeCleaner.cpp b/clang-tools-extra/clangd/IncludeCleaner.cpp
index 0bdf32c6d69dd..4e5758547a12e 100644
--- a/clang-tools-extra/clangd/IncludeCleaner.cpp
+++ b/clang-tools-extra/clangd/IncludeCleaner.cpp
@@ -476,6 +476,9 @@ std::vector<Diag> issueUnusedIncludesDiagnostics(ParsedAST &AST,
       Cfg.Diagnostics.SuppressAll ||
       Cfg.Diagnostics.Suppress.contains("unused-includes"))
     return {};
+  // Interaction is only polished for C/CPP.
+  if (AST.getLangOpts().ObjC)
+    return {};
   trace::Span Tracer("IncludeCleaner::issueUnusedIncludesDiagnostics");
   std::vector<Diag> Result;
   std::string FileName =

diff  --git a/clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp b/clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
index d79f1219511f8..9449952b10e80 100644
--- a/clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
+++ b/clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
@@ -7,10 +7,12 @@
 //===----------------------------------------------------------------------===//
 
 #include "Annotations.h"
+#include "Config.h"
 #include "IncludeCleaner.h"
 #include "SourceCode.h"
 #include "TestFS.h"
 #include "TestTU.h"
+#include "support/Context.h"
 #include "llvm/ADT/ScopeExit.h"
 #include "llvm/Testing/Support/SupportHelpers.h"
 #include "gmock/gmock.h"
@@ -599,6 +601,27 @@ TEST(IncludeCleaner, IWYUPragmaExport) {
   EXPECT_THAT(computeUnusedIncludes(AST), IsEmpty());
 }
 
+TEST(IncludeCleaner, NoDiagsForObjC) {
+  TestTU TU;
+  TU.Code = R"cpp(
+    #include "foo.h"
+
+    void bar() {}
+    )cpp";
+  TU.AdditionalFiles["foo.h"] = R"cpp(
+    #ifndef FOO_H
+    #define FOO_H
+
+    #endif
+  )cpp";
+  TU.ExtraArgs.emplace_back("-xobjective-c");
+
+  Config Cfg;
+  Cfg.Diagnostics.UnusedIncludes = Config::Strict;
+  WithContextValue Ctx(Config::Key, std::move(Cfg));
+  ParsedAST AST = TU.build();
+  EXPECT_THAT(AST.getDiagnostics(), llvm::ValueIs(IsEmpty()));
+}
 } // namespace
 } // namespace clangd
 } // namespace clang


        


More information about the cfe-commits mailing list