Include non-explicit submodules in exported module list
This change fixes Richard's testcase for r193815. Now we include non-explicit submodules into the list of exports. The test failed previously because: - recursive_visibility_a1.inner is not imported (only recursive_visibility_a1 is), - thus the 'inner' submodule is not showing up in any of the import lists, - and because of this getExportedModules() is not returning the correct module set -- it only considers modules that are imported. The fix is to make Module::getExportedModules() include non-explicit submodules into the list of exports. llvm-svn: 194018
This commit is contained in:
@@ -194,6 +194,16 @@ static void printModuleId(raw_ostream &OS, const ModuleId &Id) {
|
||||
}
|
||||
|
||||
void Module::getExportedModules(SmallVectorImpl<Module *> &Exported) const {
|
||||
// All non-explicit submodules are exported.
|
||||
for (std::vector<Module *>::const_iterator I = SubModules.begin(),
|
||||
E = SubModules.end();
|
||||
I != E; ++I) {
|
||||
Module *Mod = *I;
|
||||
if (!Mod->IsExplicit)
|
||||
Exported.push_back(Mod);
|
||||
}
|
||||
|
||||
// Find re-exported modules by filtering the list of imported modules.
|
||||
bool AnyWildcard = false;
|
||||
bool UnrestrictedWildcard = false;
|
||||
SmallVector<Module *, 4> WildcardRestrictions;
|
||||
|
||||
Reference in New Issue
Block a user