summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeCompletion
diff options
context:
space:
mode:
authorBen Langmuir <blangmuir@apple.com>2016-05-04 00:53:13 +0000
committerBen Langmuir <blangmuir@apple.com>2016-05-04 00:53:13 +0000
commit537c5b5b62c42528fc90914ce6abe7002c3fb4c4 (patch)
tree1d85faa427187b73edb925cd0416bc5f2f9d4c08 /clang/test/CodeCompletion
parent2c5aeabeddd0495dcb4b39134f3ab1e89e0d66e5 (diff)
downloadbcm5719-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')
-rw-r--r--clang/test/CodeCompletion/Inputs/ModuleA/module.modulemap4
-rw-r--r--clang/test/CodeCompletion/Inputs/ModuleA/moduleA.h1
-rw-r--r--clang/test/CodeCompletion/Inputs/import_moduleA.h2
-rw-r--r--clang/test/CodeCompletion/pch-and-module.m37
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
OpenPOWER on IntegriCloud