diff options
author | Ben Langmuir <blangmuir@apple.com> | 2016-05-04 00:53:13 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2016-05-04 00:53:13 +0000 |
commit | 537c5b5b62c42528fc90914ce6abe7002c3fb4c4 (patch) | |
tree | 1d85faa427187b73edb925cd0416bc5f2f9d4c08 /clang/test/CodeCompletion | |
parent | 2c5aeabeddd0495dcb4b39134f3ab1e89e0d66e5 (diff) | |
download | bcm5719-llvm-537c5b5b62c42528fc90914ce6abe7002c3fb4c4.tar.gz bcm5719-llvm-537c5b5b62c42528fc90914ce6abe7002c3fb4c4.zip |
Fix CodeCompletion & TypoCorrection when combining a PCH with Modules
This commit fixes the IdentifierIterator to actually include identifiers
from a PCH or precompiled preamble when there is also a global module
index. This was causing code-completion (outside of C++) and
typo-correction to be missing global identifiers defined in the
PCH/preamble. Typo-correction has been broken since we first started
using the module index, whereas code-completion only started relying on
identifier iterator in r232793.
rdar://problem/25642879
llvm-svn: 268471
Diffstat (limited to 'clang/test/CodeCompletion')
4 files changed, 44 insertions, 0 deletions
diff --git a/clang/test/CodeCompletion/Inputs/ModuleA/module.modulemap b/clang/test/CodeCompletion/Inputs/ModuleA/module.modulemap new file mode 100644 index 00000000000..b0fe1faaee6 --- /dev/null +++ b/clang/test/CodeCompletion/Inputs/ModuleA/module.modulemap @@ -0,0 +1,4 @@ +module ModuleA { + header "moduleA.h" + export * +} diff --git a/clang/test/CodeCompletion/Inputs/ModuleA/moduleA.h b/clang/test/CodeCompletion/Inputs/ModuleA/moduleA.h new file mode 100644 index 00000000000..f90f56dad82 --- /dev/null +++ b/clang/test/CodeCompletion/Inputs/ModuleA/moduleA.h @@ -0,0 +1 @@ +static int const FROM_MODULE_A = 0; diff --git a/clang/test/CodeCompletion/Inputs/import_moduleA.h b/clang/test/CodeCompletion/Inputs/import_moduleA.h new file mode 100644 index 00000000000..e2663f4e61b --- /dev/null +++ b/clang/test/CodeCompletion/Inputs/import_moduleA.h @@ -0,0 +1,2 @@ +#include "ModuleA/moduleA.h" +static int const FROM_HEADER = 1; diff --git a/clang/test/CodeCompletion/pch-and-module.m b/clang/test/CodeCompletion/pch-and-module.m new file mode 100644 index 00000000000..8361448c3a7 --- /dev/null +++ b/clang/test/CodeCompletion/pch-and-module.m @@ -0,0 +1,37 @@ +#import "import_moduleA.h" +static const int FROM_IMPL = 2; + +void test0(void) { + int x = +} +// The lines above this point are sensitive to line/column changes. + +// ===--- None +// RUN: c-index-test -code-completion-at=%s:5:11 %s -I %S/Inputs | FileCheck %s + +// ===--- Modules +// RUN: rm -rf %t && mkdir %t +// RUN: c-index-test -code-completion-at=%s:5:11 %s -I %S/Inputs -fmodules -fmodules-cache-path=%t/mcp | FileCheck %s + +// ===--- PCH +// RUN: rm -rf %t && mkdir %t +// RUN: c-index-test -write-pch %t/import_moduleA.pch -x objective-c-header %S/Inputs/import_moduleA.h -I %S/Inputs +// RUN: c-index-test -code-completion-at=%s:5:11 %s -include-pch %t/import_moduleA.pch -I %S/Inputs | FileCheck %s + +// ===--- PCH + Modules +// RUN: rm -rf %t && mkdir %t +// RUN: c-index-test -write-pch %t/import_moduleA.pch -x objective-c-header %S/Inputs/import_moduleA.h -fmodules -fmodules-cache-path=%t/mcp -I %S/Inputs +// RUN: c-index-test -code-completion-at=%s:5:11 %s -include-pch %t/import_moduleA.pch -I %S/Inputs -fmodules -fmodules-cache-path=%t/mcp | FileCheck %s + +// ===--- Preamble +// RUN: rm -rf %t && mkdir %t +// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:5:11 %s -I %S/Inputs | FileCheck %s + +// ===--- Preamble + Modules +// RUN: rm -rf %t +// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:5:11 %s -I %S/Inputs -fmodules -fmodules-cache-path=%t/mcp | FileCheck %s + + +// CHECK: FROM_HEADER +// CHECK: FROM_IMPL +// CHECK: FROM_MODULE_A |