blob: 1e8df0cdd8ed79009e917d085ed5f9bfd37d1c9f [file] [log] [blame]
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s
// FIXME: We should probably suppress the warning on reopening an inline
// namespace without the inline keyword if it's not the first opening of the
// namespace in the file, because there's no risk of the inlineness differing
// across TUs in that case.
namespace NIL {} // expected-note {{previous definition}}
inline namespace NIL {} // expected-error {{cannot be reopened as inline}}
inline namespace IL {} // expected-note {{previous definition}}
namespace IL {} // expected-warning{{inline namespace reopened as a non-inline namespace}}
namespace {} // expected-note {{previous definition}}
inline namespace {} // expected-error {{cannot be reopened as inline}}
namespace X {
inline namespace {} // expected-note {{previous definition}}
namespace {} // expected-warning {{inline namespace reopened as a non-inline namespace}}
}
namespace std {}
inline namespace std {} // expected-error{{cannot declare the namespace 'std' to be inline}}
inline namespace std::foo {} // expected-error{{cannot declare the namespace 'std' to be inline}}
// expected-error@-1{{nested namespace definition cannot be 'inline'}}
namespace foo::inline std {} // expected-note {{previous definition}}
namespace foo { inline namespace std {} } // OK
namespace foo { namespace std {} } // expected-warning {{inline namespace reopened as a non-inline namespace}}