summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2019-07-18 07:17:49 +0000
committerSam McCall <sam.mccall@gmail.com>2019-07-18 07:17:49 +0000
commit36082e397dd3861a53f67a0762856acacc5f16df (patch)
tree2c077f9f46c16dfc080a1305c4b444ac401d3b9f
parent5dd86ab2dd6b3cf447f24a619b2e651a8d7f20fc (diff)
downloadbcm5719-llvm-36082e397dd3861a53f67a0762856acacc5f16df.tar.gz
bcm5719-llvm-36082e397dd3861a53f67a0762856acacc5f16df.zip
[CodeComplete] Fix ASTUnit cached completion of macros from preamble, broken in r342528
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 llvm-svn: 366409
-rw-r--r--clang/lib/Sema/SemaCodeComplete.cpp6
-rw-r--r--clang/test/Index/complete-macros.c3
-rw-r--r--clang/test/Index/complete-macros.h1
3 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp
index 93a104e3ade..e4bbee86e35 100644
--- a/clang/lib/Sema/SemaCodeComplete.cpp
+++ b/clang/lib/Sema/SemaCodeComplete.cpp
@@ -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(),
diff --git a/clang/test/Index/complete-macros.c b/clang/test/Index/complete-macros.c
index 394f93dea0e..a0b1f4ae9e1 100644
--- a/clang/test/Index/complete-macros.c
+++ b/clang/test/Index/complete-macros.c
@@ -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
diff --git a/clang/test/Index/complete-macros.h b/clang/test/Index/complete-macros.h
index 70f49e31a1e..c9ccba2cc0e 100644
--- a/clang/test/Index/complete-macros.h
+++ b/clang/test/Index/complete-macros.h
@@ -2,5 +2,6 @@
#define COMPLETE_MACROS_H_GUARD
void in_header(int);
+#define MACRO_IN_HEADER 1
#endif
OpenPOWER on IntegriCloud