Lines Matching full:template
120 EXPECT_TRUE(matches("template<class T> class X {};", ClassX));
148 "template<class T> class Y : public X {};"
150 EXPECT_TRUE(matches("class X {}; template<class T> class Z : public X {};",
153 matches("template<class T> class X {}; "
154 "template<class T> class Z : public X<T> {};",
157 matches("template<class T, class U=T> class X {}; "
158 "template<class T> class Z : public X<T> {};",
161 notMatches("template<class X> class A { class Z : public X {}; };",
164 matches("template<class X> class A { public: class Z : public X {}; }; "
167 matches("template <class T> class X {}; "
168 "template<class Y> class A { class Z : public X<Y> {}; };",
171 notMatches("template<template<class T> class X> class A { "
174 matches("template<template<class T> class X> class A { "
176 "template<class T> class X {}; void y() { A<X>::Z z; }",
179 notMatches("template<class X> class A { class Z : public X::D {}; };",
182 matches("template<class X> class A { public: "
190 matches("template<class T> class Y { typedef typename T::U X; "
195 notMatches("template<class T> class X {}; "
196 "template<class T> class A { class Z : public X<T>::D {}; };",
199 matches("template<class T> class X { public: typedef X<T> D; }; "
200 "template<class T> class A { public: "
204 notMatches("template<class X> class A { class Z : public X::D::E {}; };",
214 matches("template<class T, class U> class X {}; "
215 "template<class T> class A { class Z : public X<T, int> {}; };",
218 notMatches("template<class X> class D { typedef X A; typedef A B; "
243 notMatches("template <typename T> class Z;"
244 "template <> class Z<void> {};"
245 "template <typename T> class Z : public Z<void> {};",
248 matches("template <typename T> class X;"
249 "template <> class X<void> {};"
250 "template <typename T> class X : public X<void> {};",
254 "template <typename T> class Z;"
255 "template <> class Z<void> {};"
256 "template <typename T> class Z : public Z<void>, public X {};",
259 notMatches("template<int> struct X;"
260 "template<int i> struct X : public X<i-1> {};",
264 "template<int> struct X;"
265 "template<int i> struct X : public X<i-1> {};"
266 "template<> struct X<0> : public A {};"
270 // FIXME: Once we have better matchers for template type matching,
271 // get rid of the Variable(...) matching and match the right template
275 "template <typename T> class Z;"
276 "template <> class Z<void> : public Base1 {};"
277 "template <> class Z<int> : public Base2 {};"
278 "template <> class Z<float> : public Z<void> {};"
279 "template <> class Z<double> : public Z<int> {};"
280 "template <typename T> class Z : public Z<float>, public Z<double> {};"
298 "template <typename T1, typename T2> class Z;"
299 "template <typename T> class Z<void, T> : public Base1 {};"
300 "template <typename T> class Z<int, T> : public Base2 {};"
301 "template <typename T> class Z<float, T> : public Z<void, T> {};"
302 "template <typename T> class Z<double, T> : public Z<int, T> {};"
303 "template <typename T1, typename T2> class Z : "
332 "template<typename T> class X {};"
333 "template<typename T> using Z = X<T>;"
334 "template <typename T> class Y : Z<T> {};",
347 "template <typename T> struct A {"
348 " template <typename T2> struct F {};"
350 "template <typename T> struct B : A<T>::template F<T> {};"
410 EXPECT_TRUE(matches("template<typename T> class X {};", ClassX));
411 EXPECT_TRUE(matches("class Z { template<class T> class X {}; };", ClassX));
415 EXPECT_TRUE(notMatches("template<typename T> class X { };"
416 "template<> class X<int> { int a; };",
422 EXPECT_TRUE(notMatches("template<typename T, typename U> class X { };"
423 "template<typename T> class X<T, int> { int a; };",
733 template <typename T>
786 M.find(Id)->second.template get<T>() == nullptr);
939 EXPECT_TRUE(matches("template <typename T> void f(T t);",
942 EXPECT_TRUE(matches("template <typename T> void f(T t);",
945 EXPECT_TRUE(matches("template <typename T> struct S {"
949 EXPECT_TRUE(notMatches("template <typename T> struct S {"
954 EXPECT_TRUE(matches("template <typename T> struct S {"
959 static const char Using[] = "template <typename T>"
964 "template <typename T>"
1049 EXPECT_TRUE(matches("template <typename T> class A {}; A<int> a;",
1165 EXPECT_FALSE(matches("template<int N>\n"
1169 EXPECT_TRUE(matches("template<int N>\n"
1176 EXPECT_TRUE(matches("template <int N> void f();",
1179 notMatches("template <typename T> void f();", nonTypeTemplateParmDecl()));
1183 EXPECT_TRUE(matches("template <typename T> void f();",
1186 notMatches("template <int N> void f();", templateTypeParmDecl()));
1544 EXPECT_TRUE(matches("void f(); template <int N> void g() { f(); }",
1547 matches("void f(); template <int N> struct S { void g() { f(); } };",
1553 notMatches("void f(int); template <typename T> void g(T t) { f(t); }",
1557 "template <typename T> struct S { void g(T t) { f(t); } };",
1562 EXPECT_TRUE(notMatches("template <typename... Ts> void f(Ts...);",
1570 matches("template <typename T> void f(T t) {}",
1582 notMatches("void g(); template <typename T> void f(T t) {}"
1583 "template <> void f(int t) { g(); }",
1763 EXPECT_TRUE(matches("template<typename T> struct A {};"
1764 "template<> struct A<int> {};",
1766 EXPECT_TRUE(matches("template<typename T> struct A {}; A<int> a;",
1768 EXPECT_TRUE(notMatches("template<typename T> struct A {};",
1784 "template<typename T> struct B {};"
1793 "template<int(B::*next_ptr)> struct A {};"
1799 "template <typename T> struct A {};"
1806 "template<int(B::*next_ptr)> struct A {};"
1812 "template <typename T> struct A {};"
1820 "template<typename T, typename U> class A {};"
1825 "template<typename T, typename U> class A {};"
1831 "template<typename T, typename U> class A {};"
1836 "template<typename T, typename U> class A {};"
1843 EXPECT_TRUE(matches("template<typename T> struct C {}; C<int> c;",
1847 "template<typename T> struct C {}; C<int> c;",
1853 matches("template<typename T> struct C {}; C<int> c;",
1856 notMatches("template<typename T> struct C {}; C<int> c;",
1859 EXPECT_TRUE(matches("template<typename T> struct C {}; C<int> c;",
1862 notMatches("template<typename T> struct C {}; C<int> c;",
1867 EXPECT_TRUE(matches("template<int T> struct C {}; C<42> c;",
1870 EXPECT_TRUE(notMatches("template<typename T> struct C {}; C<int> c;",
1876 EXPECT_TRUE(matches("template<int T> struct C {}; C<42> c;",
1880 EXPECT_TRUE(notMatches("template<unsigned T> struct C {}; C<42> c;",
1886 EXPECT_TRUE(matches("template<int T> struct C {}; C<42> c;",
1889 EXPECT_TRUE(matches("template<int T> struct C {}; C<-42> c;",
1892 EXPECT_TRUE(matches("template<int T> struct C {}; C<-0042> c;",
1895 EXPECT_TRUE(notMatches("template<int T> struct C {}; C<42> c;",
1968 matches("template <typename Base> struct Y : Base { void f() override;};",
2721 "template <typename T> class B { public: void y() { T t; t.x(); } };"
2729 " template <typename T> class B { public: void y() { T t; t.x(); } };"
2747 "template <typename T>"
3688 "template<typename T1, typename T2> class X {}; X<float, int> x;",
3736 "template <typename T> struct A { struct B {"
3819 // the template was instantiated with (via a field).
3822 "template <typename T> class X {}; class A {}; X<A> x;",
3826 "template <typename T> class X { T t; }; class A {}; X<A> x;",
3833 "template <typename T> void f(T t) {} class A {}; void g() { f(A()); }",
3840 "template <typename T> class X { T t; }; class A {};"
3841 "template class X<A>;",
3849 "template <typename T> class X {};"
3850 "template <typename T> class X<T*> {}; class A {}; X<A*> x;",
3859 " template <typename U> class Y { U u; };"
3868 // as template instantiation, but it might be confusing as a predicate.
3871 "template <typename T> class X {"
3872 " template <typename U> class Y { U u; };"
3880 "template <typename T> class X {}; class A {};"
3881 "template <> class X<A> {}; X<A> x;",
3893 matches("template<typename T> class A { T i; }; class Y { A<int> a; };",
3898 EXPECT_TRUE(notMatches("template<typename T> class A { T i; };",
3903 EXPECT_TRUE(matches("template<typename T> struct A { A() { T i; } };"
3909 EXPECT_TRUE(notMatches("template<typename T> struct A { void x() { T i; } };",
3915 matches("template<typename T> void A(T t) { T i; } void x() { A(0); }",
3920 EXPECT_TRUE(notMatches("template<typename T> void A(T t) { T i; }",
3926 matches("template<typename T> void A(T t) { T i; } void x() { A(0); }",
3931 EXPECT_TRUE(notMatches("template<typename T> void A(T t) { T i; }",
3940 "int j; template<typename T> void A(T t) { j += 42; } void x() { A(0); }",
3943 "int j; template<typename T> void A(T t) { j += t; } void x() { A(0); }",
3950 "template <typename T> class X {};",
3953 "template <typename T> void f(T t);",
3960 "template <typename T> class X {};"
3961 "template class X<int>; extern template class X<long>;",
3964 "template <typename T> void f(T t) {}"
3965 "template void f(int t); extern template void f(long t);",
3972 "template <typename T> class X {}; X<int> x;",
3975 "template <typename T> void f(T t); void g() { f(10); }",
3982 "template <typename T> class X {};"
3983 "template<> class X<int> {};",
3986 "template <typename T> void f(T t) {}"
3987 "template<> void f(int t) {}",
4043 "template <typename T> struct C {"
4048 "template struct C<int>;",
4057 "template <typename T> struct A { struct B { struct C { T t; }; }; }; "
4085 "template <typename T> struct C { static void f() { 42; } };"
4096 "template <typename T> struct C { static void f() { 42; } };"
4103 matches("template <typename T> struct C { static void f() { 42; } };"
4110 "template <typename T> struct C { static void f() { 42; } };"
4119 notMatches("template <typename T> struct C { static void f() {} };"
4140 "template <typename T> int Foo() { return 1 + 2; }\n"
4216 "template <typename T, int Size> class array { T data[Size]; };",
4425 EXPECT_TRUE(matches("template <typename T> class A{}; A<int> a;",
4489 const std::string code = "template <typename T>"
4503 EXPECT_TRUE(matches("template <typename T> class A { typename T::B b; };",
4662 template <typename T> class VerifyMatchOnNode : public BoundNodesCallback {
4717 template <typename T>