File tree 2 files changed +20
-6
lines changed
unittests/Tooling/RecursiveASTVisitorTests
2 files changed +20
-6
lines changed Original file line number Diff line number Diff line change @@ -2036,12 +2036,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLocsHelper(
2036
2036
#define DEF_TRAVERSE_TMPL_PART_SPEC_DECL (TMPLDECLKIND, DECLKIND ) \
2037
2037
DEF_TRAVERSE_DECL (TMPLDECLKIND##TemplatePartialSpecializationDecl, { \
2038
2038
/* The partial specialization. */ \
2039
- if (TemplateParameterList *TPL = D->getTemplateParameters ()) { \
2040
- for (TemplateParameterList::iterator I = TPL->begin (), E = TPL->end (); \
2041
- I != E; ++I) { \
2042
- TRY_TO (TraverseDecl (*I)); \
2043
- } \
2044
- } \
2039
+ TRY_TO (TraverseTemplateParameterListHelper (D->getTemplateParameters ())); \
2045
2040
/* The args that remains unspecialized. */ \
2046
2041
TRY_TO (TraverseTemplateArgumentLocsHelper ( \
2047
2042
D->getTemplateArgsAsWritten ()->getTemplateArgs (), \
Original file line number Diff line number Diff line change @@ -86,6 +86,25 @@ TEST(RecursiveASTVisitor, Concepts) {
86
86
EXPECT_EQ (3 , Visitor.ConceptRequirementsTraversed );
87
87
EXPECT_EQ (1 , Visitor.ConceptReferencesTraversed );
88
88
EXPECT_EQ (1 , Visitor.ConceptReferencesVisited );
89
+
90
+ Visitor = {};
91
+ llvm::StringRef Code =
92
+ R"cpp(
93
+ template<typename T> concept True = false;
94
+ template <typename F> struct Foo {};
95
+
96
+ template <typename F>
97
+ requires requires { requires True<F>; }
98
+ struct Foo<F> {};
99
+
100
+ template <typename F> requires True<F>
101
+ struct Foo<F> {};
102
+ )cpp" ;
103
+ EXPECT_TRUE (Visitor.runOver (Code, ConceptVisitor::Lang_CXX2a));
104
+ // Check that the concept references from the partial specializations are
105
+ // visited.
106
+ EXPECT_EQ (2 , Visitor.ConceptReferencesTraversed );
107
+ EXPECT_EQ (2 , Visitor.ConceptReferencesVisited );
89
108
}
90
109
91
110
struct VisitDeclOnlyOnce : ExpectedLocationVisitor<VisitDeclOnlyOnce> {
You can’t perform that action at this time.
0 commit comments