I have an interpretation for the recursive application of [module.import] p7, which makes a module unit export more TUs. Consider this example
// translation unit #1
export module M:C;
// translation unit #2
export module M:B;
import :C;
// translation unit #3
export module M;
export import :B;
// translation unit #4
import M;
According to the following rule
Additionally, when a module-import-declaration in a module unit of some module M imports another module unit U of M, it also imports all translation units imported by non-exported module-import-declarations in the module unit purview of U.
There is a non-exported module-import-declaration in TU #2, and the module-import-declaration in #3 that imports `M:B` is in the module unit `#3` of module `M`, hence the module-import-declaration in #3 not only imports `M:B` but also imports `M:C`.
[module.import] p7 also says
The exported
module-import-declaration at `#3` imports `M:B` and `M:C` as aforementioned, so `M:B` and `M:C` are exported by `#3`?
GCC does not accept this interpretation, which only considers that `M:B` is exported by `#3`. Which are these TUs referred to by "
such translation units" in "
such translation units are said to be exported by T."? According to the context, "such translations units" should refer to all TUs that are imported by the
module-import-declaration. Why does GCC only consider `M:B` as being exported?