summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/unittests/FindTargetTests.cpp')
-rw-r--r--clang-tools-extra/clangd/unittests/FindTargetTests.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
index 8c9727fb64e..f34205a81f3 100644
--- a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
+++ b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
@@ -315,6 +315,20 @@ TEST_F(TargetDeclTest, ClassTemplate) {
EXPECT_DECLS("TemplateSpecializationTypeLoc",
{"template<> class Foo<int *>", Rel::TemplateInstantiation},
{"template <typename T> class Foo<T *>", Rel::TemplatePattern});
+
+ Code = R"cpp(
+ // Class template argument deduction
+ template <typename T>
+ struct Test {
+ Test(T);
+ };
+ void foo() {
+ [[Test]] a(5);
+ }
+ )cpp";
+ Flags.push_back("-std=c++17");
+ EXPECT_DECLS("DeducedTemplateSpecializationTypeLoc",
+ {"struct Test", Rel::TemplatePattern});
}
TEST_F(TargetDeclTest, FunctionTemplate) {
@@ -549,6 +563,7 @@ protected:
// FIXME: Auto-completion in a template requires disabling delayed template
// parsing.
TU.ExtraArgs.push_back("-fno-delayed-template-parsing");
+ TU.ExtraArgs.push_back("-std=c++17");
auto AST = TU.build();
@@ -937,7 +952,20 @@ TEST_F(FindExplicitReferencesTest, All) {
};
)cpp",
"0: targets = {size}, decl\n"
- "1: targets = {E}\n"}};
+ "1: targets = {E}\n"},
+ // Class template argument deduction
+ {
+ R"cpp(
+ template <typename T>
+ struct Test {
+ Test(T);
+ };
+ void foo() {
+ $0^Test $1^a(5);
+ }
+ )cpp",
+ "0: targets = {Test}\n"
+ "1: targets = {a}, decl\n"}};
for (const auto &C : Cases) {
llvm::StringRef ExpectedCode = C.first;
OpenPOWER on IntegriCloud