}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
bool IsInclusionDirective);
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility);
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc);
};
/// \brief Make the given module visible.
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) = 0;
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) = 0;
};
}
/// \param NameVisibility The level of visibility to give the names in the
/// module. Visibility can only be increased over time.
void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind NameVisibility);
+ Module::NameVisibilityKind NameVisibility,
+ SourceLocation ImportLoc);
/// \brief Make the names within this set of hidden names visible.
void makeNamesVisible(const HiddenNames &Names);
if (!ImportLoc.isInvalid() && LastModuleImportLoc == ImportLoc) {
// Make the named module visible.
if (LastModuleImportResult)
- ModuleManager->makeModuleVisible(LastModuleImportResult, Visibility);
+ ModuleManager->makeModuleVisible(LastModuleImportResult, Visibility,
+ ImportLoc);
return LastModuleImportResult;
}
return ModuleLoadResult();
}
- ModuleManager->makeModuleVisible(Module, Visibility);
+ ModuleManager->makeModuleVisible(Module, Visibility, ImportLoc);
}
// If this module import was due to an inclusion directive, create an
}
void CompilerInstance::makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility){
- ModuleManager->makeModuleVisible(Mod, Visibility);
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc){
+ ModuleManager->makeModuleVisible(Mod, Visibility, ImportLoc);
}
Consumer.HandleImplicitImportDecl(ImportD);
// Make the module visible.
- PP.getModuleLoader().makeModuleVisible(Mod, Module::AllVisible);
+ PP.getModuleLoader().makeModuleVisible(Mod, Module::AllVisible, Loc);
}
void Sema::ActOnPragmaRedefineExtname(IdentifierInfo* Name,
}
void ASTReader::makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind NameVisibility) {
+ Module::NameVisibilityKind NameVisibility,
+ SourceLocation ImportLoc) {
llvm::SmallPtrSet<Module *, 4> Visited;
SmallVector<Module *, 4> Stack;
Stack.push_back(Mod);
// Re-export any modules that were imported by a non-module AST file.
for (unsigned I = 0, N = ImportedModules.size(); I != N; ++I) {
if (Module *Imported = getSubmodule(ImportedModules[I]))
- makeModuleVisible(Imported, Module::AllVisible);
+ makeModuleVisible(Imported, Module::AllVisible,
+ /*ImportLoc=*/SourceLocation());
}
ImportedModules.clear();
}
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
TEST_F(SourceManagerTest, isBeforeInTranslationUnit) {
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
TEST_F(LexerTest, LexAPI) {
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
// Stub to collect data from InclusionDirective callbacks.
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) {