forked from OSchip/llvm-project
Don't fixit/recover from -Wstatic-float-init when it's not an error.
Fix to change r173414 that lead to Clang changing const to constexpr even under -Wno-static-float-init. llvm-svn: 173835
This commit is contained in:
parent
386241ce5b
commit
3645cf99f2
|
@ -7203,11 +7203,15 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init,
|
|||
// In C++98, this is a GNU extension. In C++11, it is not, but we support
|
||||
// it anyway and provide a fixit to add the 'constexpr'.
|
||||
if (getLangOpts().CPlusPlus11) {
|
||||
Diag(VDecl->getLocation(),
|
||||
diag::ext_in_class_initializer_float_type_cxx11)
|
||||
<< DclT << Init->getSourceRange()
|
||||
<< FixItHint::CreateInsertion(VDecl->getLocStart(), "constexpr ");
|
||||
VDecl->setConstexpr(true);
|
||||
SemaDiagnosticBuilder D = Diag(VDecl->getLocation(),
|
||||
diag::ext_in_class_initializer_float_type_cxx11);
|
||||
D << DclT << Init->getSourceRange();
|
||||
if (Diags.getDiagnosticLevel(diag::warn_initializer_out_of_order,
|
||||
VDecl->getLocation()) >=
|
||||
DiagnosticsEngine::Error) {
|
||||
D << FixItHint::CreateInsertion(VDecl->getLocStart(), "constexpr ");
|
||||
VDecl->setConstexpr(true);
|
||||
}
|
||||
} else {
|
||||
Diag(VDecl->getLocation(), diag::ext_in_class_initializer_float_type)
|
||||
<< DclT << Init->getSourceRange();
|
||||
|
|
|
@ -17,11 +17,11 @@ public:
|
|||
};
|
||||
|
||||
namespace rdar8367341 {
|
||||
float foo(); // expected-note 2{{here}}
|
||||
float foo(); // expected-note {{here}}
|
||||
|
||||
struct A {
|
||||
static const float x = 5.0f; // expected-warning {{requires 'constexpr'}}
|
||||
static const float y = foo(); // expected-warning {{requires 'constexpr'}} expected-error {{constexpr variable 'y' must be initialized by a constant expression}} expected-note {{non-constexpr function 'foo'}}
|
||||
static const float y = foo(); // expected-warning {{requires 'constexpr'}}
|
||||
static constexpr float x2 = 5.0f;
|
||||
static constexpr float y2 = foo(); // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr function 'foo'}}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue