Skip to content

Commit 36082e3

Browse files
committed
[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
1 parent 5dd86ab commit 36082e3

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

clang/lib/Sema/SemaCodeComplete.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8603,8 +8603,7 @@ void Sema::CodeCompletePreprocessorExpression() {
86038603

86048604
if (!CodeCompleter || CodeCompleter->includeMacros())
86058605
AddMacroResults(PP, Results,
8606-
CodeCompleter ? CodeCompleter->loadExternal() : false,
8607-
true);
8606+
!CodeCompleter || CodeCompleter->loadExternal(), true);
86088607

86098608
// defined (<macro>)
86108609
Results.EnterNewScope();
@@ -8801,8 +8800,7 @@ void Sema::GatherGlobalCodeCompletions(
88018800

88028801
if (!CodeCompleter || CodeCompleter->includeMacros())
88038802
AddMacroResults(PP, Builder,
8804-
CodeCompleter ? CodeCompleter->loadExternal() : false,
8805-
true);
8803+
!CodeCompleter || CodeCompleter->loadExternal(), true);
88068804

88078805
Results.clear();
88088806
Results.insert(Results.end(), Builder.data(),

clang/test/Index/complete-macros.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ void test_variadic() {
2828
// RUN: c-index-test -code-completion-at=%s:7:1 %s -I%S | FileCheck -check-prefix=CHECK-CC0 %s
2929
// CHECK-CC0-NOT: FOO
3030
// 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
31+
// (we had a regression that only occurred when parsing as C++, so check that too)
32+
// 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
3133
// CHECK-CC1: macro definition:{TypedText FOO} (70)
34+
// CHECK-CC1: macro definition:{TypedText MACRO_IN_HEADER} (70)
3235
// RUN: c-index-test -code-completion-at=%s:13:13 %s -I%S | FileCheck -check-prefix=CHECK-CC2 %s
3336
// RUN: c-index-test -code-completion-at=%s:14:8 %s -I%S | FileCheck -check-prefix=CHECK-CC2 %s
3437
// 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

clang/test/Index/complete-macros.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
#define COMPLETE_MACROS_H_GUARD
33

44
void in_header(int);
5+
#define MACRO_IN_HEADER 1
56

67
#endif

0 commit comments

Comments
 (0)