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 | 8e46615f64533785befa0660732cdb3cdcdf7969 (patch) | |
tree | 64a2e5ecea77a47d71424f250ce5a02915be47c2 /test/CodeCompletion | |
parent | 6bd4c225fc54be00dd936c9d8b57bb02e64eaf4c (diff) |
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
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268471 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeCompletion')
-rw-r--r-- | test/CodeCompletion/Inputs/ModuleA/module.modulemap | 4 | ||||
-rw-r--r-- | test/CodeCompletion/Inputs/ModuleA/moduleA.h | 1 | ||||
-rw-r--r-- | test/CodeCompletion/Inputs/import_moduleA.h | 2 | ||||
-rw-r--r-- | test/CodeCompletion/pch-and-module.m | 37 |
4 files changed, 44 insertions, 0 deletions
diff --git a/test/CodeCompletion/Inputs/ModuleA/module.modulemap b/test/CodeCompletion/Inputs/ModuleA/module.modulemap new file mode 100644 index 0000000000..b0fe1faaee --- /dev/null +++ b/test/CodeCompletion/Inputs/ModuleA/module.modulemap @@ -0,0 +1,4 @@ +module ModuleA { + header "moduleA.h" + export * +} diff --git a/test/CodeCompletion/Inputs/ModuleA/moduleA.h b/test/CodeCompletion/Inputs/ModuleA/moduleA.h new file mode 100644 index 0000000000..f90f56dad8 --- /dev/null +++ b/test/CodeCompletion/Inputs/ModuleA/moduleA.h @@ -0,0 +1 @@ +static int const FROM_MODULE_A = 0; diff --git a/test/CodeCompletion/Inputs/import_moduleA.h b/test/CodeCompletion/Inputs/import_moduleA.h new file mode 100644 index 0000000000..e2663f4e61 --- /dev/null +++ b/test/CodeCompletion/Inputs/import_moduleA.h @@ -0,0 +1,2 @@ +#include "ModuleA/moduleA.h" +static int const FROM_HEADER = 1; diff --git a/test/CodeCompletion/pch-and-module.m b/test/CodeCompletion/pch-and-module.m new file mode 100644 index 0000000000..8361448c3a --- /dev/null +++ b/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 |