| // RUN: %clang_cc1 -frecovery-ast -verify %s | 
 |  | 
 | struct X { | 
 |   int Y; | 
 |   constexpr X() | 
 |       : Y(foo()) {} // expected-error {{use of undeclared identifier 'foo'}} | 
 | }; | 
 | // no crash on evaluating the constexpr ctor. | 
 | constexpr int Z = X().Y; // expected-error {{constexpr variable 'Z' must be initialized by a constant expression}} | 
 |  | 
 | struct X2 { | 
 |   int Y = foo();    // expected-error {{use of undeclared identifier 'foo'}} | 
 |   constexpr X2() {} | 
 | }; | 
 |  | 
 | struct X3 { | 
 |   int Y; | 
 |   constexpr X3() | 
 |       : Y(({foo();})) {} // expected-error {{use of undeclared identifier 'foo'}} | 
 | }; | 
 |  | 
 | struct CycleDelegate { | 
 |   int Y; | 
 |   CycleDelegate(int) | 
 |       : Y(foo()) {} // expected-error {{use of undeclared identifier 'foo'}} | 
 |   // no bogus "delegation cycle" diagnostic | 
 |   CycleDelegate(float) : CycleDelegate(1) {} | 
 | }; | 
 |  | 
 | struct X4 { | 
 |   int* p = new int(invalid()); // expected-error {{use of undeclared identifier}} | 
 | }; | 
 | // no crash on evaluating the CXXDefaultInitExpr. | 
 | constexpr int* s = X4().p; // expected-error {{must be initialized by}} |