// RUN: %clang_cc1 %s -fcxx-exceptions -fdeclspec -fsyntax-only -Wexceptions -verify -std=c++14
// RUN: %clang_cc1 %s -fcxx-exceptions -fdeclspec -fsyntax-only -Wexceptions -verify -std=c++17 -DCPP17
void ;
static_assert;
void ;
// expected-error@+2 {{exception specification in declaration does not match previous declaration}}
// expected-note@-2 {{previous declaration is here}}
void ;
void ;
static_assert;
// expected-error@+2 {{exception specification in declaration does not match previous declaration}}
// expected-note@-3 {{previous declaration is here}}
void ;
void ;
static_assert;
void ;
// expected-error@+2 {{exception specification in declaration does not match previous declaration}}
// expected-note@-2 {{previous declaration is here}}
void ;
// Still noexcept due to throw()
void throw;
static_assert;
// Still noexcept due to noexcept
void ;
static_assert;
// Still noexcept due to noexcept(true)
void ;
static_assert;
// Doesn't override C++ implementation.
// expected-warning@+1{{'nothrow' attribute conflicts with exception specification; attribute ignored}}
void throw;
static_assert;
// Doesn't override C++ implementation.
// expected-warning@+1{{'nothrow' attribute conflicts with exception specification; attribute ignored}}
void ;
static_assert;
__declspec void ;
__declspec void ;
// expected-warning@+1{{'nothrow' attribute conflicts with exception specification; attribute ignored}}
__declspec void ;
__declspec void ;
__declspec void ;
// expected-warning@+1{{'nothrow' attribute conflicts with exception specification; attribute ignored}}
__declspec void ;
__declspec void ;
// FIXME: It would be nice to be able to warn on these, however at the time we
// evaluate the nothrow, these have yet to be parsed, so the data is not yet
// there.
;