]> granicus.if.org Git - clang/commitdiff
[CodeComplete] Fix ASTUnit cached completion of macros from preamble, broken in r342528
authorSam McCall <sam.mccall@gmail.com>
Thu, 18 Jul 2019 07:17:49 +0000 (07:17 +0000)
committerSam McCall <sam.mccall@gmail.com>
Thu, 18 Jul 2019 07:17:49 +0000 (07:17 +0000)
Summary:
The problem is the default LoadExternal with no completer, which happens when
loading global results.

Reviewers: ilya-biryukov, nik

Subscribers: arphaman, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64864

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@366409 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaCodeComplete.cpp
test/Index/complete-macros.c
test/Index/complete-macros.h

index 93a104e3ade5f6adbe94fa66e8abc8818245066b..e4bbee86e3502dc40887ba13eeddbb657dc5eeb3 100644 (file)
@@ -8603,8 +8603,7 @@ void Sema::CodeCompletePreprocessorExpression() {
 
   if (!CodeCompleter || CodeCompleter->includeMacros())
     AddMacroResults(PP, Results,
-                    CodeCompleter ? CodeCompleter->loadExternal() : false,
-                    true);
+                    !CodeCompleter || CodeCompleter->loadExternal(), true);
 
   // defined (<macro>)
   Results.EnterNewScope();
@@ -8801,8 +8800,7 @@ void Sema::GatherGlobalCodeCompletions(
 
   if (!CodeCompleter || CodeCompleter->includeMacros())
     AddMacroResults(PP, Builder,
-                    CodeCompleter ? CodeCompleter->loadExternal() : false,
-                    true);
+                    !CodeCompleter || CodeCompleter->loadExternal(), true);
 
   Results.clear();
   Results.insert(Results.end(), Builder.data(),
index 394f93dea0e2b949dcf41f1612fecee2347055f9..a0b1f4ae9e13da7fc6097bd876d6255eccc71b35 100644 (file)
@@ -28,7 +28,10 @@ void test_variadic() {
 // RUN: c-index-test -code-completion-at=%s:7:1 %s -I%S | FileCheck -check-prefix=CHECK-CC0 %s
 // CHECK-CC0-NOT: FOO
 // RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:1 %s -I%S | FileCheck -check-prefix=CHECK-CC1 %s
+// (we had a regression that only occurred when parsing as C++, so check that too)
+// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:1 -x c++ %s -I%S | FileCheck -check-prefix=CHECK-CC1 %s
 // CHECK-CC1: macro definition:{TypedText FOO} (70)
+// CHECK-CC1: macro definition:{TypedText MACRO_IN_HEADER} (70)
 // RUN: c-index-test -code-completion-at=%s:13:13 %s -I%S | FileCheck -check-prefix=CHECK-CC2 %s
 // RUN: c-index-test -code-completion-at=%s:14:8 %s -I%S | FileCheck -check-prefix=CHECK-CC2 %s
 // RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:14:8 %s -I%S | FileCheck -check-prefix=CHECK-CC2 %s
index 70f49e31a1e34c194882c861a5563f45e5a7825a..c9ccba2cc0e9867bbbffbca246e1ab118de4f986 100644 (file)
@@ -2,5 +2,6 @@
 #define COMPLETE_MACROS_H_GUARD
 
 void in_header(int);
+#define MACRO_IN_HEADER 1
 
 #endif