[PATCH] D112996: [CodeCompletion] Generally consider header files without extension

Christian Kandeler via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 3 09:09:25 PDT 2021


ckandeler updated this revision to Diff 384485.
ckandeler added a comment.

Addressed comments.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112996/new/

https://reviews.llvm.org/D112996

Files:
  clang/lib/Sema/SemaCodeComplete.cpp


Index: clang/lib/Sema/SemaCodeComplete.cpp
===================================================================
--- clang/lib/Sema/SemaCodeComplete.cpp
+++ clang/lib/Sema/SemaCodeComplete.cpp
@@ -9613,6 +9613,10 @@
       }
     }
 
+    const StringRef &Dirname = llvm::sys::path::filename(Dir);
+    const bool isQt = Dirname.startswith("Qt") || Dirname == "ActiveQt";
+    const bool ExtensionlessHeaders = IsSystem || isQt
+        || Dir.endswith(".framework/Headers");
     std::error_code EC;
     unsigned Count = 0;
     for (auto It = FS.dir_begin(Dir, EC);
@@ -9639,15 +9643,16 @@
 
         AddCompletion(Filename, /*IsDirectory=*/true);
         break;
-      case llvm::sys::fs::file_type::regular_file:
-        // Only files that really look like headers. (Except in system dirs).
-        if (!IsSystem) {
-          // Header extensions from Types.def, which we can't depend on here.
-          if (!(Filename.endswith_insensitive(".h") ||
-                Filename.endswith_insensitive(".hh") ||
-                Filename.endswith_insensitive(".hpp") ||
-                Filename.endswith_insensitive(".inc")))
-            break;
+      case llvm::sys::fs::file_type::regular_file: {
+        // Only files that really look like headers. (Except in special dirs).
+        // Header extensions from Types.def, which we can't depend on here.
+        const bool IsHeader = Filename.endswith_insensitive(".h") ||
+            Filename.endswith_insensitive(".hh") ||
+            Filename.endswith_insensitive(".hpp") ||
+            Filename.endswith_insensitive(".inc") ||
+            (ExtensionlessHeaders && !Filename.contains('.'));
+        if (!IsHeader)
+          break;
         }
         AddCompletion(Filename, /*IsDirectory=*/false);
         break;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112996.384485.patch
Type: text/x-patch
Size: 1781 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20211103/7ee0bb22/attachment.bin>


More information about the cfe-commits mailing list