aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Module.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Basic/Module.cpp')
-rw-r--r--clang/lib/Basic/Module.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/clang/lib/Basic/Module.cpp b/clang/lib/Basic/Module.cpp
index 4ffdb6a..4e6fbfc 100644
--- a/clang/lib/Basic/Module.cpp
+++ b/clang/lib/Basic/Module.cpp
@@ -370,6 +370,28 @@ Module *Module::findOrInferSubmodule(StringRef Name) {
return Result;
}
+Module *Module::getGlobalModuleFragment() const {
+ assert(isNamedModuleUnit() && "We should only query the global module "
+ "fragment from the C++ 20 Named modules");
+
+ for (auto *SubModule : SubModules)
+ if (SubModule->isExplicitGlobalModule())
+ return SubModule;
+
+ return nullptr;
+}
+
+Module *Module::getPrivateModuleFragment() const {
+ assert(isNamedModuleUnit() && "We should only query the private module "
+ "fragment from the C++ 20 Named modules");
+
+ for (auto *SubModule : SubModules)
+ if (SubModule->isPrivateModule())
+ return SubModule;
+
+ return nullptr;
+}
+
void Module::getExportedModules(SmallVectorImpl<Module *> &Exported) const {
// All non-explicit submodules are exported.
for (std::vector<Module *>::const_iterator I = SubModules.begin(),