summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp')
-rw-r--r--clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp b/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp
index 248dab8ca27..9a703761224 100644
--- a/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp
+++ b/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp
@@ -657,6 +657,22 @@ TEST(CompletionTest, IndexSuppressesPreambleCompletions) {
UnorderedElementsAre(Named("local"), Named("preamble")));
}
+// This verifies that we get normal preprocessor completions in the preamble.
+// This is a regression test for an old bug: if we override the preamble and
+// try to complete inside it, clang kicks our completion point just outside the
+// preamble, resulting in always getting top-level completions.
+TEST(CompletionTest, CompletionInPreamble) {
+ EXPECT_THAT(completions(R"cpp(
+ #ifnd^ef FOO_H_
+ #define BAR_H_
+ #include <bar.h>
+ int foo() {}
+ #endif
+ )cpp")
+ .Completions,
+ ElementsAre(Named("ifndef")));
+};
+
TEST(CompletionTest, DynamicIndexMultiFile) {
MockFSProvider FS;
MockCompilationDatabase CDB;
OpenPOWER on IntegriCloud