summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp')
-rw-r--r--clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 8f8376e25bc..4dcb8701a35 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -2382,6 +2382,28 @@ TEST(CompletionTest, ObjectiveCMethodTwoArgumentsFromMiddle) {
EXPECT_THAT(C, ElementsAre(SnippetSuffix("${1:(unsigned int)}")));
}
+TEST(CompletionTest, CursorInSnippets) {
+ clangd::CodeCompleteOptions Options;
+ Options.EnableSnippets = true;
+ auto Results = completions(
+ R"cpp(
+ void while_foo(int a, int b);
+ void test() {
+ whil^
+ })cpp",
+ /*IndexSymbols=*/{}, Options);
+
+ // Last placeholder in code patterns should be $0 to put the cursor there.
+ EXPECT_THAT(
+ Results.Completions,
+ Contains(AllOf(Named("while"),
+ SnippetSuffix("(${1:condition}){${0:statements}\n}"))));
+ // However, snippets for functions must *not* end with $0.
+ EXPECT_THAT(Results.Completions,
+ Contains(AllOf(Named("while_foo"),
+ SnippetSuffix("(${1:int a}, ${2:int b})"))));
+}
+
TEST(CompletionTest, WorksWithNullType) {
auto R = completions(R"cpp(
int main() {
OpenPOWER on IntegriCloud