Lines Matching refs:Module
20 #include "clang/Basic/Module.h"
56 void ModuleMap::resolveLinkAsDependencies(Module *Mod) {
67 void ModuleMap::addLinkAsDependency(Module *Mod) {
74 Module::HeaderKind ModuleMap::headerRoleToKind(ModuleHeaderRole Role) {
77 return Module::HK_Normal;
79 return Module::HK_Private;
81 return Module::HK_Textual;
83 return Module::HK_PrivateTextual;
85 return Module::HK_Excluded;
91 ModuleMap::headerKindToRole(Module::HeaderKind Kind) {
93 case Module::HK_Normal:
95 case Module::HK_Private:
97 case Module::HK_Textual:
99 case Module::HK_PrivateTextual:
101 case Module::HK_Excluded:
111 Module::ExportDecl
112 ModuleMap::resolveExport(Module *Mod,
113 const Module::UnresolvedExportDecl &Unresolved,
118 return Module::ExportDecl(nullptr, true);
122 Module *Context = resolveModuleId(Unresolved.Id, Mod, Complain);
126 return Module::ExportDecl(Context, Unresolved.Wildcard);
129 Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod,
132 Module *Context = lookupModuleUnqualified(Id[0].first, Mod);
143 Module *Sub = lookupModuleQualified(Id[I].first, Context);
161 static void appendSubframeworkPaths(Module *Mod,
179 Module *M, const Module::UnresolvedHeaderDirective &Header,
293 void ModuleMap::resolveHeader(Module *Mod,
294 const Module::UnresolvedHeaderDirective &Header,
301 if (Module *UmbrellaMod = UmbrellaDirs[UmbrellaDir])
309 Module::Header H = {Header.FileName, std::string(RelativePathName),
316 } else if (Header.Kind == Module::HK_Excluded) {
332 Module *Mod, const Module::UnresolvedHeaderDirective &Header) {
333 if (Header.Kind == Module::HK_Excluded ||
349 Module::Header H = {Header.FileName, Header.FileName, *File};
414 Module *Module) const {
416 Module->IsSystem && !Module->isPartOfFramework() &&
464 static bool violatesPrivateInclude(Module *RequestingModule,
473 ArrayRef<Module::Header> HeaderList[] = {
474 Header.getModule()->getHeaders(Module::HK_Private),
475 Header.getModule()->getHeaders(Module::HK_PrivateTextual)};
478 Hs, [&](const Module::Header &H) { return H.Entry == IncFileEnt; });
485 static Module *getTopLevelOrNull(Module *M) {
489 void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule,
504 Module *Private = nullptr;
505 Module *NotUsed = nullptr;
635 Module *Result = H.getModule();
639 Module *UmbrellaModule = Result;
666 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
681 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
724 FileEntryRef Header, const Module *RequestingModule) const {
756 auto IsUnavailable = [&](const Module *M) {
766 Module *Found = KnownDir->second;
772 Module *UmbrellaModule = Found;
817 Module *ModuleMap::findModule(StringRef Name) const {
818 llvm::StringMap<Module *>::const_iterator Known = Modules.find(Name);
825 Module *ModuleMap::findOrInferSubmodule(Module *Parent, StringRef Name) {
826 if (Module *SubM = Parent->findSubmodule(Name))
830 Module *Result = new (ModulesAlloc.Allocate())
831 Module(ModuleConstructorTag{}, Name, SourceLocation(), Parent, false,
837 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
841 Module *ModuleMap::lookupModuleUnqualified(StringRef Name,
842 Module *Context) const {
844 if (Module *Sub = lookupModuleQualified(Name, Context))
851 Module *ModuleMap::lookupModuleQualified(StringRef Name, Module *Context) const{
858 std::pair<Module *, bool> ModuleMap::findOrCreateModule(StringRef Name,
859 Module *Parent,
863 if (Module *Sub = lookupModuleQualified(Name, Parent))
867 Module *M = createModule(Name, Parent, IsFramework, IsExplicit);
871 Module *ModuleMap::createModule(StringRef Name, Module *Parent,
876 Module *Result = new (ModulesAlloc.Allocate())
877 Module(ModuleConstructorTag{}, Name, SourceLocation(), Parent,
888 Module *ModuleMap::createGlobalModuleFragmentForModuleUnit(SourceLocation Loc,
889 Module *Parent) {
890 auto *Result = new (ModulesAlloc.Allocate()) Module(
893 Result->Kind = Module::ExplicitGlobalModuleFragment;
901 Module *
903 Module *Parent) {
910 Module(ModuleConstructorTag{}, "<implicit global>", Loc, Parent,
912 Result->Kind = Module::ImplicitGlobalModuleFragment;
916 Module *
917 ModuleMap::createPrivateModuleFragmentForInterfaceUnit(Module *Parent,
919 auto *Result = new (ModulesAlloc.Allocate()) Module(
922 Result->Kind = Module::PrivateModuleFragment;
926 Module *ModuleMap::createModuleUnitWithKind(SourceLocation Loc, StringRef Name,
927 Module::ModuleKind Kind) {
929 Module(ModuleConstructorTag{}, Name, Loc, nullptr, /*IsFramework=*/false,
940 Module *ModuleMap::createModuleForInterfaceUnit(SourceLocation Loc,
946 createModuleUnitWithKind(Loc, Name, Module::ModuleInterfaceUnit);
958 Module *ModuleMap::createModuleForImplementationUnit(SourceLocation Loc,
962 assert(Modules[Name] && Modules[Name]->Kind == Module::ModuleInterfaceUnit &&
972 createModuleUnitWithKind(Loc, Name, Module::ModuleImplementationUnit);
982 Module *ModuleMap::createHeaderUnit(SourceLocation Loc, StringRef Name,
983 Module::Header H) {
988 Module(ModuleConstructorTag{}, Name, Loc, nullptr, /*IsFramework=*/false,
990 Result->Kind = Module::ModuleHeaderUnit;
998 static void inferFrameworkLink(Module *Mod) {
1005 Mod->LinkLibraries.push_back(Module::LinkLibrary(FrameworkName.str(),
1009 Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir,
1010 bool IsSystem, Module *Parent) {
1016 Module *ModuleMap::inferFrameworkModule(DirectoryEntryRef FrameworkDir,
1017 Attributes Attrs, Module *Parent) {
1033 if (Module *Mod = lookupModuleQualified(ModuleName, Parent))
1102 Module *Result = new (ModulesAlloc.Allocate())
1103 Module(ModuleConstructorTag{}, ModuleName, SourceLocation(), Parent,
1129 Result->Exports.push_back(Module::ExportDecl(nullptr, true));
1188 Module *ModuleMap::createShadowedModule(StringRef Name, bool IsFramework,
1189 Module *ShadowingModule) {
1192 Module *Result = new (ModulesAlloc.Allocate())
1193 Module(ModuleConstructorTag{}, Name, SourceLocation(), /*Parent=*/nullptr,
1204 Module *Mod, FileEntryRef UmbrellaHeader, const Twine &NameAsWritten,
1219 Module *Mod, DirectoryEntryRef UmbrellaDir, const Twine &NameAsWritten,
1228 void ModuleMap::addUnresolvedHeader(Module *Mod,
1229 Module::UnresolvedHeaderDirective Header,
1248 Header.Kind != Module::HK_Excluded) {
1281 Module *Mod, std::optional<const FileEntry *> File) const {
1283 SmallVector<Module::UnresolvedHeaderDirective, 1> NewHeaders;
1299 void ModuleMap::addHeader(Module *Mod, Module::Header Header,
1327 FileID ModuleMap::getContainingModuleMapFileID(const Module *Module) const {
1328 if (Module->DefinitionLoc.isInvalid())
1331 return SourceMgr.getFileID(Module->DefinitionLoc);
1335 ModuleMap::getContainingModuleMapFile(const Module *Module) const {
1336 return SourceMgr.getFileEntryRefForID(getContainingModuleMapFileID(Module));
1339 FileID ModuleMap::getModuleMapFileIDForUniquing(const Module *M) const {
1348 ModuleMap::getModuleMapFileForUniquing(const Module *M) const {
1352 void ModuleMap::setInferredModuleAllowedBy(Module *M, FileID ModMapFID) {
1390 void ModuleMap::addAdditionalModuleMapFile(const Module *M,
1397 for (llvm::StringMap<Module *>::iterator M = Modules.begin(),
1417 bool ModuleMap::resolveExports(Module *Mod, bool Complain) {
1421 Module::ExportDecl Export = resolveExport(Mod, UE, Complain);
1430 bool ModuleMap::resolveUses(Module *Mod, bool Complain) {
1435 Module *DirectUse = resolveModuleId(UDU, Top, Complain);
1444 bool ModuleMap::resolveConflicts(Module *Mod, bool Complain) {
1448 if (Module *OtherMod = resolveModuleId(UC.Id, Mod, Complain)) {
1449 Module::Conflict Conflict;
1460 // Module map file parser
1566 Module *ActiveModule = nullptr;
1576 llvm::SmallPtrSet<Module *, 2> UsesRequiresExcludedHack;
1878 const Module *M, SourceRange ReplLoc) {
2013 Module *PreviousActiveModule = ActiveModule;
2018 const Module *TopLevelModule = nullptr;
2020 if (Module *Next = Map.lookupModuleQualified(Id[I].first, ActiveModule)) {
2064 Module *ShadowingModule = nullptr;
2065 if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {
2332 static bool shouldAddRequirement(Module *M, StringRef Feature,
2432 // Module::UsesRequiresExcludedHack).
2454 Module::UnresolvedHeaderDirective Header;
2539 static bool compareModuleHeaders(const Module::Header &A,
2540 const Module::Header &B) {
2592 SmallVector<Module::Header, 6> Headers;
2598 Module::Header Header = {"", std::string(I->path()), *FE};
2611 if (Module *OwningModule = Map.UmbrellaDirs[*Dir]) {
2664 Module::UnresolvedExportDecl Unresolved = {
2749 ActiveModule->LinkLibraries.push_back(Module::LinkLibrary(LibraryName,
2833 Module::UnresolvedConflict Conflict;