1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s
3 // FIXME: We should probably suppress the warning on reopening an inline
4 // namespace without the inline keyword if it's not the first opening of the
5 // namespace in the file, because there's no risk of the inlineness differing
6 // across TUs in that case.
8 namespace NIL
{} // expected-note {{previous definition}}
9 inline namespace NIL
{} // expected-error {{cannot be reopened as inline}}
10 inline namespace IL
{} // expected-note {{previous definition}}
11 namespace IL
{} // expected-warning{{inline namespace reopened as a non-inline namespace}}
13 namespace {} // expected-note {{previous definition}}
14 inline namespace {} // expected-error {{cannot be reopened as inline}}
16 inline namespace {} // expected-note {{previous definition}}
17 namespace {} // expected-warning {{inline namespace reopened as a non-inline namespace}}
21 inline namespace std
{} // expected-error{{cannot declare the namespace 'std' to be inline}}
22 inline namespace std::foo
{} // expected-error{{cannot declare the namespace 'std' to be inline}}
23 // expected-error@-1{{nested namespace definition cannot be 'inline'}}
24 namespace foo::inline std
{} // expected-note {{previous definition}}
25 namespace foo
{ inline namespace std
{} } // OK
26 namespace foo
{ namespace std
{} } // expected-warning {{inline namespace reopened as a non-inline namespace}}