Lines Matching refs:Module

20 #include "clang/Basic/Module.h"
58 void ModuleMap::resolveLinkAsDependencies(Module *Mod) {
69 void ModuleMap::addLinkAsDependency(Module *Mod) {
76 Module::HeaderKind ModuleMap::headerRoleToKind(ModuleHeaderRole Role) {
79 return Module::HK_Normal;
81 return Module::HK_Private;
83 return Module::HK_Textual;
85 return Module::HK_PrivateTextual;
87 return Module::HK_Excluded;
93 ModuleMap::headerKindToRole(Module::HeaderKind Kind) {
95 case Module::HK_Normal:
97 case Module::HK_Private:
99 case Module::HK_Textual:
101 case Module::HK_PrivateTextual:
103 case Module::HK_Excluded:
113 Module::ExportDecl
114 ModuleMap::resolveExport(Module *Mod,
115 const Module::UnresolvedExportDecl &Unresolved,
120 return Module::ExportDecl(nullptr, true);
124 Module *Context = resolveModuleId(Unresolved.Id, Mod, Complain);
128 return Module::ExportDecl(Context, Unresolved.Wildcard);
131 Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod,
134 Module *Context = lookupModuleUnqualified(Id[0].first, Mod);
145 Module *Sub = lookupModuleQualified(Id[I].first, Context);
163 static void appendSubframeworkPaths(Module *Mod,
181 Module *M, const Module::UnresolvedHeaderDirective &Header,
295 void ModuleMap::resolveHeader(Module *Mod,
296 const Module::UnresolvedHeaderDirective &Header,
303 if (Module *UmbrellaMod = UmbrellaDirs[UmbrellaDir])
311 Module::Header H = {Header.FileName, std::string(RelativePathName),
318 } else if (Header.Kind == Module::HK_Excluded) {
334 Module *Mod, const Module::UnresolvedHeaderDirective &Header) {
335 if (Header.Kind == Module::HK_Excluded ||
351 Module::Header H = {Header.FileName, Header.FileName, *File};
421 Module *Module) const {
423 Module->IsSystem && !Module->isPartOfFramework() &&
471 static bool violatesPrivateInclude(Module *RequestingModule,
480 SmallVectorImpl<Module::Header> *HeaderList[] = {
481 &Header.getModule()->Headers[Module::HK_Private],
482 &Header.getModule()->Headers[Module::HK_PrivateTextual]};
485 *Hs, [&](const Module::Header &H) { return H.Entry == IncFileEnt; });
492 static Module *getTopLevelOrNull(Module *M) {
496 void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule,
511 Module *Private = nullptr;
512 Module *NotUsed = nullptr;
642 Module *Result = H.getModule();
646 Module *UmbrellaModule = Result;
674 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
690 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
733 FileEntryRef Header, const Module *RequestingModule) const {
765 auto IsUnavailable = [&](const Module *M) {
775 Module *Found = KnownDir->second;
781 Module *UmbrellaModule = Found;
826 Module *ModuleMap::findModule(StringRef Name) const {
827 llvm::StringMap<Module *>::const_iterator Known = Modules.find(Name);
834 Module *ModuleMap::lookupModuleUnqualified(StringRef Name,
835 Module *Context) const {
837 if (Module *Sub = lookupModuleQualified(Name, Context))
844 Module *ModuleMap::lookupModuleQualified(StringRef Name, Module *Context) const{
851 std::pair<Module *, bool> ModuleMap::findOrCreateModule(StringRef Name,
852 Module *Parent,
856 if (Module *Sub = lookupModuleQualified(Name, Parent))
860 Module *Result = new Module(Name, SourceLocation(), Parent, IsFramework,
871 Module *ModuleMap::createGlobalModuleFragmentForModuleUnit(SourceLocation Loc,
872 Module *Parent) {
873 auto *Result = new Module("<global>", Loc, Parent, /*IsFramework*/ false,
875 Result->Kind = Module::ExplicitGlobalModuleFragment;
883 Module *
885 Module *Parent) {
892 new Module("<implicit global>", Loc, Parent, /*IsFramework=*/false,
894 Result->Kind = Module::ImplicitGlobalModuleFragment;
898 Module *
899 ModuleMap::createPrivateModuleFragmentForInterfaceUnit(Module *Parent,
902 new Module("<private>", Loc, Parent, /*IsFramework*/ false,
904 Result->Kind = Module::PrivateModuleFragment;
908 Module *ModuleMap::createModuleUnitWithKind(SourceLocation Loc, StringRef Name,
909 Module::ModuleKind Kind) {
911 new Module(Name, Loc, nullptr, /*IsFramework*/ false,
924 Module *ModuleMap::createModuleForInterfaceUnit(SourceLocation Loc,
930 createModuleUnitWithKind(Loc, Name, Module::ModuleInterfaceUnit);
942 Module *ModuleMap::createModuleForImplementationUnit(SourceLocation Loc,
946 assert(Modules[Name] && Modules[Name]->Kind == Module::ModuleInterfaceUnit &&
956 createModuleUnitWithKind(Loc, Name, Module::ModuleImplementationUnit);
966 Module *ModuleMap::createHeaderUnit(SourceLocation Loc, StringRef Name,
967 Module::Header H) {
971 auto *Result = new Module(Name, Loc, nullptr, /*IsFramework*/ false,
973 Result->Kind = Module::ModuleHeaderUnit;
981 static void inferFrameworkLink(Module *Mod) {
988 Mod->LinkLibraries.push_back(Module::LinkLibrary(FrameworkName.str(),
992 Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir,
993 bool IsSystem, Module *Parent) {
999 Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir,
1000 Attributes Attrs, Module *Parent) {
1016 if (Module *Mod = lookupModuleQualified(ModuleName, Parent))
1085 Module *Result = new Module(ModuleName, SourceLocation(), Parent,
1113 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
1171 Module *ModuleMap::createShadowedModule(StringRef Name, bool IsFramework,
1172 Module *ShadowingModule) {
1175 Module *Result =
1176 new Module(Name, SourceLocation(), /*Parent=*/nullptr, IsFramework,
1187 Module *Mod, FileEntryRef UmbrellaHeader, const Twine &NameAsWritten,
1202 Module *Mod, DirectoryEntryRef UmbrellaDir, const Twine &NameAsWritten,
1211 void ModuleMap::addUnresolvedHeader(Module *Mod,
1212 Module::UnresolvedHeaderDirective Header,
1231 Header.Kind != Module::HK_Excluded) {
1264 Module *Mod, std::optional<const FileEntry *> File) const {
1266 SmallVector<Module::UnresolvedHeaderDirective, 1> NewHeaders;
1282 void ModuleMap::addHeader(Module *Mod, Module::Header Header,
1309 FileID ModuleMap::getContainingModuleMapFileID(const Module *Module) const {
1310 if (Module->DefinitionLoc.isInvalid())
1313 return SourceMgr.getFileID(Module->DefinitionLoc);
1317 ModuleMap::getContainingModuleMapFile(const Module *Module) const {
1318 return SourceMgr.getFileEntryRefForID(getContainingModuleMapFileID(Module));
1321 FileID ModuleMap::getModuleMapFileIDForUniquing(const Module *M) const {
1330 ModuleMap::getModuleMapFileForUniquing(const Module *M) const {
1334 void ModuleMap::setInferredModuleAllowedBy(Module *M, FileID ModMapFID) {
1372 void ModuleMap::addAdditionalModuleMapFile(const Module *M,
1379 for (llvm::StringMap<Module *>::iterator M = Modules.begin(),
1399 bool ModuleMap::resolveExports(Module *Mod, bool Complain) {
1403 Module::ExportDecl Export = resolveExport(Mod, UE, Complain);
1412 bool ModuleMap::resolveUses(Module *Mod, bool Complain) {
1417 Module *DirectUse = resolveModuleId(UDU, Top, Complain);
1426 bool ModuleMap::resolveConflicts(Module *Mod, bool Complain) {
1430 if (Module *OtherMod = resolveModuleId(UC.Id, Mod, Complain)) {
1431 Module::Conflict Conflict;
1442 // Module map file parser
1548 Module *ActiveModule = nullptr;
1558 llvm::SmallPtrSet<Module *, 2> UsesRequiresExcludedHack;
1860 const Module *M, SourceRange ReplLoc) {
1995 Module *PreviousActiveModule = ActiveModule;
2000 const Module *TopLevelModule = nullptr;
2002 if (Module *Next = Map.lookupModuleQualified(Id[I].first, ActiveModule)) {
2046 Module *ShadowingModule = nullptr;
2047 if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {
2315 static bool shouldAddRequirement(Module *M, StringRef Feature,
2415 // Module::UsesRequiresExcludedHack).
2437 Module::UnresolvedHeaderDirective Header;
2522 static bool compareModuleHeaders(const Module::Header &A,
2523 const Module::Header &B) {
2575 SmallVector<Module::Header, 6> Headers;
2581 Module::Header Header = {"", std::string(I->path()), *FE};
2594 if (Module *OwningModule = Map.UmbrellaDirs[*Dir]) {
2647 Module::UnresolvedExportDecl Unresolved = {
2732 ActiveModule->LinkLibraries.push_back(Module::LinkLibrary(LibraryName,
2816 Module::UnresolvedConflict Conflict;