blob: af54e5fbe87b476d045bab24f2c40bf1a633ec4d [file] [log] [blame]
// { dg-additional-options "-fmodules-ts" }
// { dg-module-cmi !bad }
export module bad;
namespace global {}
struct S { int x; };
export static int x = 123; // { dg-error "internal linkage" }
export static void f(); // { dg-error "internal linkage" }
export static void g() {} // { dg-error "internal linkage" }
export template <typename T> static void t(); // { dg-error "internal linkage" }
export template <typename T> static void u() {} // { dg-error "internal linkage" }
#if __cplusplus >= 202002L
export static auto [d] = S{}; // { dg-error "internal linkage" "" { target c++20 } }
#endif
namespace {
export int y = 456; // { dg-error "exporting" }
export void h(); // { dg-error "exporting" }
export void i() {} // { dg-error "exporting" }
export template <typename T> void v(); // { dg-error "exporting" }
export template <typename T> void w() {} // { dg-error "exporting" }
export auto [e] = S{}; // { dg-error "exporting" }
export namespace ns {} // { dg-error "exporting" }
export namespace alias = global; // { dg-error "exporting" }
export struct A {}; // { dg-error "exporting" }
export template <typename T> struct B {}; // { dg-error "exporting" }
export enum E {}; // { dg-error "exporting" }
export enum class F {}; // { dg-error "exporting" }
export template <typename T> using U = int; // { dg-error "exporting" }
#if __cplusplus >= 202002L
export template <typename T> concept C = true; // { dg-error "exporting" "" { target c++20 } }
#endif
// Also complain about exporting no-linkage decls in an unnamed namespace
export typedef int T; // { dg-error "exporting" }
export typedef struct {} *PC; // { dg-error "exporting" }
export using V = int; // { dg-error "exporting" }
}
export namespace {} // { dg-error "exporting unnamed namespace" }