diff options
Diffstat (limited to 'lib/Basic/Module.cpp')
-rw-r--r-- | lib/Basic/Module.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/lib/Basic/Module.cpp b/lib/Basic/Module.cpp index c3a8a377c4..97bddfa97e 100644 --- a/lib/Basic/Module.cpp +++ b/lib/Basic/Module.cpp @@ -37,6 +37,14 @@ bool Module::isSubModuleOf(Module *Other) const { return false; } +const Module *Module::getTopLevelModule() const { + const Module *Result = this; + while (Result->Parent) + Result = Result->Parent; + + return Result; +} + std::string Module::getFullModuleName() const { llvm::SmallVector<StringRef, 2> Names; @@ -57,14 +65,6 @@ std::string Module::getFullModuleName() const { return Result; } -StringRef Module::getTopLevelModuleName() const { - const Module *Top = this; - while (Top->Parent) - Top = Top->Parent; - - return Top->Name; -} - static void printModuleId(llvm::raw_ostream &OS, const ModuleId &Id) { for (unsigned I = 0, N = Id.size(); I != N; ++I) { if (I) @@ -96,7 +96,7 @@ void Module::print(llvm::raw_ostream &OS, unsigned Indent) const { } for (llvm::StringMap<Module *>::const_iterator MI = SubModules.begin(), - MIEnd = SubModules.end(); + MIEnd = SubModules.end(); MI != MIEnd; ++MI) MI->getValue()->print(OS, Indent + 2); @@ -126,6 +126,19 @@ void Module::print(llvm::raw_ostream &OS, unsigned Indent) const { OS << "\n"; } + if (InferSubmodules) { + OS.indent(Indent + 2); + if (InferExplicitSubmodules) + OS << "explicit "; + OS << "module * {\n"; + if (InferExportWildcard) { + OS.indent(Indent + 4); + OS << "export *\n"; + } + OS.indent(Indent + 2); + OS << "}\n"; + } + OS.indent(Indent); OS << "}\n"; } |