Skip to content

Commit

Permalink
[CodeComplete] Fix ASTUnit cached completion of macros from preamble,…
Browse files Browse the repository at this point in the history
… 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
  • Loading branch information
sam-mccall committed Jul 18, 2019
1 parent 5dd86ab commit 36082e3
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 4 deletions.
6 changes: 2 additions & 4 deletions clang/lib/Sema/SemaCodeComplete.cpp
Expand Up @@ -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();
Expand Down Expand Up @@ -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(),
Expand Down
3 changes: 3 additions & 0 deletions clang/test/Index/complete-macros.c
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions clang/test/Index/complete-macros.h
Expand Up @@ -2,5 +2,6 @@
#define COMPLETE_MACROS_H_GUARD

void in_header(int);
#define MACRO_IN_HEADER 1

#endif

0 comments on commit 36082e3

Please sign in to comment.