The following test fails to compile TU b.cpp because we are not making the transitively imported modules visible (per [module.import]/p7)
a.cppm: export module a; export int foo() { return 42; } b.cppm: export module b; import a; export int bar(); b.cpp: module b; int bar() { return foo(); } clang++ -c -std=c++2b -fmodule-output a.cppm clang++ -c -std=c++2b -fmodule-output -fprebuilt-module-path=. b.cppm clang++ -c -std=c++2b -fprebuilt-module-path=. b.cpp b.cpp:4:12: error: declaration of 'foo' must be imported from module 'a' before it is required return foo();
This is fixed by the following patch (which also addresses a FIXME in basic.def.odr/p6.cppm).