aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaModule.cpp
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2023-06-12 20:38:02 +0100
committerIain Sandoe <iain@sandoe.co.uk>2023-06-25 08:33:39 +0100
commitb37233a253f30e4bd5f040d598826df443293bee (patch)
tree82d6ff3f6f8eacb0b770e8cc337decb8f3155227 /clang/lib/Sema/SemaModule.cpp
parent2a61ceddb30aaed291317795e3183371e8cf3d7a (diff)
downloadllvm-b37233a253f30e4bd5f040d598826df443293bee.zip
llvm-b37233a253f30e4bd5f040d598826df443293bee.tar.gz
llvm-b37233a253f30e4bd5f040d598826df443293bee.tar.bz2
[C++20][Modules] Complete implementation of module.import p7.
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). Differential Revision: https://reviews.llvm.org/D152746
Diffstat (limited to 'clang/lib/Sema/SemaModule.cpp')
-rw-r--r--clang/lib/Sema/SemaModule.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaModule.cpp b/clang/lib/Sema/SemaModule.cpp
index 9b2982e..2ffb0db 100644
--- a/clang/lib/Sema/SemaModule.cpp
+++ b/clang/lib/Sema/SemaModule.cpp
@@ -397,6 +397,7 @@ Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc,
if (Interface) {
VisibleModules.setVisible(Interface, ModuleLoc);
+ VisibleModules.makeTransitiveImportsVisible(Interface, ModuleLoc);
// Make the import decl for the interface in the impl module.
ImportDecl *Import = ImportDecl::Create(Context, CurContext, ModuleLoc,