forked from OSchip/llvm-project
30 lines
1.0 KiB
C++
30 lines
1.0 KiB
C++
// RUN: %clang_cc1 -frecovery-ast -verify %s
|
|
|
|
struct X {
|
|
int Y;
|
|
constexpr X() // expected-error {{constexpr constructor never produces}}
|
|
: 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'}} \
|
|
// expected-note {{subexpression not valid in a constant expression}}
|
|
constexpr X2() {} // expected-error {{constexpr constructor never produces a constant expression}}
|
|
};
|
|
|
|
struct X3 {
|
|
int Y;
|
|
constexpr X3() // expected-error {{constexpr constructor never produces}}
|
|
: 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) {}
|
|
};
|