1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -fsyntax-only -verify %s
2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Don't crash (PR18284).
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesnamespace n1 {
5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass A { };
6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass C { A a; };
7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
8651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesA::RunTest() {} // expected-error {{C++ requires a type specifier for all declarations}}
9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid f() {
11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  new C;
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} // namespace n1
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesnamespace n2 {
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass A { };
17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass C : public A { };
18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
19651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesA::RunTest() {} // expected-error {{C++ requires a type specifier for all declarations}}
20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid f() {
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  new C;
23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} // namespace n2
25