llvm-project/clang/test/Modules/cxx20-10-2-ex6.cpp

22 lines
1004 B
C++

// Based on C++20 10.2 example 6.
// RUN: %clang_cc1 -std=c++20 -emit-module-interface %s -verify -o M.pcm
export module M;
static int f(); // expected-note {{previous declaration is here}} #1
// error: #1 gives internal linkage
export int f(); // expected-error {{cannot export redeclaration 'f' here since the previous declaration has internal linkage}}
struct S; // expected-note {{previous declaration is here}} #2
// error: #2 gives module linkage
export struct S; // expected-error {{cannot export redeclaration 'S' here since the previous declaration has module linkage}}
namespace {
namespace N {
extern int x; // expected-note {{previous declaration is here}} #3
}
} // namespace
// error: #3 gives internal linkage
export int N::x; // expected-error {{cannot export redeclaration 'x' here since the previous declaration has internal linkage}}
// expected-error@-1 {{declaration of 'x' with internal linkage cannot be exported}}