1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 // Clang used to crash trying to recover while adding 'this->' before Work(x);
5 template <typename> struct A {
6 static void Work(int); // expected-note{{must qualify identifier}}
9 template <typename T> struct B : public A<T> {
10 template <typename T2> B(T2 x) {
11 Work(x); // expected-error{{use of undeclared identifier}}
16 B<int> b(0); // expected-note{{in instantiation of function template}}
22 template <class P> struct S // expected-error {{expected ';'}}
23 template <> static S<Q>::f() // expected-error +{{}}
27 template <typename T> void f();
28 template<typename C> void g(C*) {
29 struct LocalStruct : UnknownBase<Mumble, C> { }; // expected-error {{unknown template name 'UnknownBase'}} \
30 // expected-error {{use of undeclared identifier 'Mumble'}}
31 f<LocalStruct>(); // expected-warning {{template argument uses local type 'LocalStruct'}}
35 g<S>(0); // expected-note {{in instantiation of function template specialization}}