Refactor the module map file used for uniquing a module name out of
class Module. It's almost always going to be the same as getContainingModule() for top-level modules, so just add a map to cover the remaining cases. This lets us do less bookkeeping to keep the ModuleMap fields up to date. llvm-svn: 215268
This commit is contained in:
@@ -25,8 +25,8 @@
|
||||
using namespace clang;
|
||||
|
||||
Module::Module(StringRef Name, SourceLocation DefinitionLoc, Module *Parent,
|
||||
const FileEntry *File, bool IsFramework, bool IsExplicit)
|
||||
: Name(Name), DefinitionLoc(DefinitionLoc), Parent(Parent), ModuleMap(File),
|
||||
bool IsFramework, bool IsExplicit)
|
||||
: Name(Name), DefinitionLoc(DefinitionLoc), Parent(Parent),
|
||||
Umbrella(), ASTFile(nullptr), IsMissingRequirement(false),
|
||||
IsAvailable(true), IsFromModuleFile(false), IsFramework(IsFramework),
|
||||
IsExplicit(IsExplicit), IsSystem(false), IsExternC(false),
|
||||
@@ -361,7 +361,11 @@ void Module::print(raw_ostream &OS, unsigned Indent) const {
|
||||
|
||||
for (submodule_const_iterator MI = submodule_begin(), MIEnd = submodule_end();
|
||||
MI != MIEnd; ++MI)
|
||||
if (!(*MI)->IsInferred)
|
||||
// Print inferred subframework modules so that we don't need to re-infer
|
||||
// them (requires expensive directory iteration + stat calls) when we build
|
||||
// the module. Regular inferred submodules are OK, as we need to look at all
|
||||
// those header files anyway.
|
||||
if (!(*MI)->IsInferred || (*MI)->IsFramework)
|
||||
(*MI)->print(OS, Indent + 2);
|
||||
|
||||
for (unsigned I = 0, N = Exports.size(); I != N; ++I) {
|
||||
|
||||
Reference in New Issue
Block a user