1 // RUN: %clang_cc1 -frecovery-ast -verify %s 2 3 struct X { 4 int Y; XX5 constexpr X() 6 : Y(foo()) {} // expected-error {{use of undeclared identifier 'foo'}} 7 }; 8 // no crash on evaluating the constexpr ctor. 9 constexpr int Z = X().Y; // expected-error {{constexpr variable 'Z' must be initialized by a constant expression}} 10 11 struct X2 { 12 int Y = foo(); // expected-error {{use of undeclared identifier 'foo'}} X2X213 constexpr X2() {} 14 }; 15 16 struct X3 { 17 int Y; X3X318 constexpr X3() 19 : Y(({foo();})) {} // expected-error {{use of undeclared identifier 'foo'}} 20 }; 21 22 struct CycleDelegate { 23 int Y; CycleDelegateCycleDelegate24 CycleDelegate(int) 25 : Y(foo()) {} // expected-error {{use of undeclared identifier 'foo'}} 26 // no bogus "delegation cycle" diagnostic CycleDelegateCycleDelegate27 CycleDelegate(float) : CycleDelegate(1) {} 28 }; 29 30 struct X4 { 31 int* p = new int(invalid()); // expected-error {{use of undeclared identifier}} 32 }; 33 // no crash on evaluating the CXXDefaultInitExpr. 34 constexpr int* s = X4().p; // expected-error {{must be initialized by}} 35