[CodeComplete] #include completion treats -I as non-system (require header-like exten...
authorSam McCall <sam.mccall@gmail.com>
Mon, 1 Oct 2018 11:56:42 +0000 (11:56 +0000)
committerSam McCall <sam.mccall@gmail.com>
Mon, 1 Oct 2018 11:56:42 +0000 (11:56 +0000)
llvm-svn: 343457

clang/lib/Sema/SemaCodeComplete.cpp
clang/test/CodeCompletion/included-files.cpp

index acf4365..bc7d5b5 100644 (file)
@@ -8098,7 +8098,7 @@ void Sema::CodeCompleteIncludedFile(llvm::StringRef Dir, bool Angled) {
       AddFilesFromDirLookup(D, false);
   }
   for (const auto &D : make_range(S.angled_dir_begin(), S.angled_dir_end()))
-    AddFilesFromDirLookup(D, true);
+    AddFilesFromDirLookup(D, false);
   for (const auto &D : make_range(S.system_dir_begin(), S.system_dir_end()))
     AddFilesFromDirLookup(D, true);
 
index 81892c5..ba153e6 100644 (file)
 // CHECK-2: foosys.h"
 // CHECK-2-NOT: foosys"
 
-// Angled string showes all files, but only in system dirs.
+// Angled shows headers from system dirs.
 #include <foosys>
 // RUN: %clang -fsyntax-only -isystem %t/a -Xclang -code-completion-at=%t/main.cc:19:13 %t/main.cc | FileCheck -check-prefix=CHECK-3 %s
 // CHECK-3-NOT: foo.cc>
 // CHECK-3-NOT: foo.h>
 // CHECK-3: foosys>
 
+// With -I rather than -isystem, the header extension is required.
+#include <foosys>
+// RUN: %clang -fsyntax-only -I %t/a -Xclang -code-completion-at=%t/main.cc:26:13 %t/main.cc | FileCheck -check-prefix=CHECK-4 %s
+// CHECK-4-NOT: foo.cc>
+// CHECK-4-NOT: foo.h>
+// CHECK-4-NOT: foosys>
+
 // Backslash handling.
 #include "a\foosys"
-// RUN: %clang -fsyntax-only -isystem %t/a -Xclang -code-completion-at=%t/main.cc:26:13 %t/main.cc -fms-compatibility | FileCheck -check-prefix=CHECK-4 %s
-// CHECK-4: foosys.h"
-
+// RUN: %clang -fsyntax-only -isystem %t/a -Xclang -code-completion-at=%t/main.cc:33:13 %t/main.cc -fms-compatibility | FileCheck -check-prefix=CHECK-5 %s
+// CHECK-5: foosys.h"