// { dg-additional-options "-fmodules-ts" } // { dg-module-cmi !M } export module M; // Same as a linkage-1 except within an anonymous namespace; // now these declarations cannot possibly be defined outside this TU, // so we should error. namespace { auto f() { struct A {}; return A{}; } decltype(f()) g(); // { dg-error "used but never defined" } struct {} s; decltype(s) h(); // { dg-error "used but never defined" } } export void use() { g(); h(); } // Additionally, unnamed types have no linkage but are also TU-local, and thus // cannot be exposed in a module interface unit. The non-TU-local entity 's' // here is an exposure of this type. struct {} s; // { dg-error "exposes TU-local entity" }