1e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -verify %s
2e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis
3e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis// Don't crash.
4e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis
5e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidistemplate<typename aT>
6e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidisstruct basic_string{
7e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis  a; // expected-error {{requires a type specifier}}
8e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis  basic_string(aT*);
9e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis};
10e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis
1106808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedmanstruct runtime_error{
1206808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman  runtime_error(
13e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidisbasic_string<char> struct{ // expected-error {{cannot combine with previous 'type-name' declaration specifier}}
14e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidisa(){ // expected-error {{requires a type specifier}}
1506808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman  runtime_error(0);
16e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis}
17e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis}
18e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis);
19e36bca6f2abd868b9ae68ff1c0d691de7520ca8cArgyrios Kyrtzidis};
20