|
clang 23.0.0git
|
Describes a module or submodule. More...
#include "clang/Basic/Module.h"
Classes | |
| struct | Conflict |
| A conflict between two modules. More... | |
| struct | DirectoryName |
| Information about a directory name as found in the module map file. More... | |
| struct | Header |
| Information about a header directive as found in the module map file. More... | |
| struct | LinkLibrary |
| A library or framework to link against when an entity from this module is used. More... | |
| struct | Requirement |
| struct | UnresolvedConflict |
| An unresolved conflict with another module. More... | |
| struct | UnresolvedExportDecl |
| Describes an exported module that has not yet been resolved (perhaps because the module it refers to has not yet been loaded). More... | |
| struct | UnresolvedHeaderDirective |
| Stored information about a header directive that was found in the module map file but has not been resolved to a file. More... | |
Public Types | |
| enum | ModuleKind { ModuleMapModule , ModuleHeaderUnit , ModuleInterfaceUnit , ModuleImplementationUnit , ModulePartitionInterface , ModulePartitionImplementation , ExplicitGlobalModuleFragment , PrivateModuleFragment , ImplicitGlobalModuleFragment } |
| enum | HeaderKind { HK_Normal , HK_Textual , HK_Private , HK_PrivateTextual , HK_Excluded } |
| enum | NameVisibilityKind { Hidden , AllVisible } |
| Describes the visibility of the various names within a particular module. More... | |
| using | ExportDecl = std::pair<ModuleRef, bool> |
| Describes an exported module. | |
| using | submodule_iterator = std::vector<ModuleRef>::iterator |
| using | submodule_const_iterator = std::vector<ModuleRef>::const_iterator |
Public Member Functions | |
| bool | isNamedModule () const |
| Does this Module is a named module of a standard named module? | |
| bool | isGlobalModule () const |
| Does this Module scope describe a fragment of the global module within some C++ module. | |
| bool | isExplicitGlobalModule () const |
| bool | isImplicitGlobalModule () const |
| bool | isPrivateModule () const |
| bool | isModuleMapModule () const |
| ArrayRef< Header > | getAllHeaders () const |
| ArrayRef< Header > | getHeaders (HeaderKind HK) const |
| void | addHeader (HeaderKind HK, Header H) |
| Module (ModuleConstructorTag, StringRef Name, SourceLocation DefinitionLoc, Module *Parent, bool IsFramework, bool IsExplicit, unsigned VisibilityID) | |
| Construct a new module or submodule. | |
| ~Module () | |
| bool | isUnimportable () const |
| Determine whether this module has been declared unimportable. | |
| bool | isUnimportable (const LangOptions &LangOpts, const TargetInfo &Target, Requirement &Req, Module *&ShadowingModule) const |
| Determine whether this module has been declared unimportable. | |
| bool | isForBuilding (const LangOptions &LangOpts) const |
| Determine whether this module can be built in this compilation. | |
| bool | isAvailable () const |
| Determine whether this module is available for use within the current translation unit. | |
| bool | isAvailable (const LangOptions &LangOpts, const TargetInfo &Target, Requirement &Req, UnresolvedHeaderDirective &MissingHeader, Module *&ShadowingModule) const |
| Determine whether this module is available for use within the current translation unit. | |
| bool | isSubModule () const |
| Determine whether this module is a submodule. | |
| bool | isSubModuleOf (const Module *Other) const |
Check if this module is a (possibly transitive) submodule of Other. | |
| bool | isPartOfFramework () const |
| Determine whether this module is a part of a framework, either because it is a framework module or because it is a submodule of a framework module. | |
| bool | isSubFramework () const |
| Determine whether this module is a subframework of another framework. | |
| void | setParent (Module *M) |
| Set the parent of this module. | |
| void | addSubmodule (StringRef Name, Module *Submodule) |
| Add a child submodule. | |
| void | addSubmodule (StringRef Name, ExternalSubmoduleSource *ExternalSource, uint64_t SubmoduleID) |
| Add the external part of a submodule ModuleRef. | |
| bool | isHeaderLikeModule () const |
| Is this module have similar semantics as headers. | |
| bool | isModulePartition () const |
| Is this a module partition. | |
| bool | isModulePartitionImplementation () const |
| Is this a module partition implementation unit. | |
| bool | isModuleImplementation () const |
| Is this a module implementation. | |
| bool | isHeaderUnit () const |
| Is this module a header unit. | |
| bool | isInterfaceOrPartition () const |
| bool | isNamedModuleUnit () const |
| Is this a C++20 named module unit. | |
| bool | isModuleInterfaceUnit () const |
| bool | isNamedModuleInterfaceHasInit () const |
| StringRef | getPrimaryModuleInterfaceName () const |
| Get the primary module interface name from a partition. | |
| std::string | getFullModuleName (bool AllowStringLiterals=false) const |
| Retrieve the full name of this module, including the path from its top-level module. | |
| bool | fullModuleNameIs (ArrayRef< StringRef > nameParts) const |
Whether the full name of this module is equal to joining nameParts with "."s. | |
| Module * | getTopLevelModule () |
| Retrieve the top-level module for this (sub)module, which may be this module. | |
| const Module * | getTopLevelModule () const |
| Retrieve the top-level module for this (sub)module, which may be this module. | |
| StringRef | getTopLevelModuleName () const |
| Retrieve the name of the top-level module. | |
| const ModuleFileName * | getASTFileName () const |
| The serialized AST file name for this module, if one was created. | |
| const ModuleFileKey * | getASTFileKey () const |
| The serialized AST file key for this module, if one was created. | |
| void | setASTFileNameAndKey (ModuleFileName NewName, ModuleFileKey NewKey) |
| Set the serialized module file for the top-level module of this module. | |
| std::optional< DirectoryName > | getUmbrellaDirAsWritten () const |
| Retrieve the umbrella directory as written. | |
| std::optional< Header > | getUmbrellaHeaderAsWritten () const |
| Retrieve the umbrella header as written. | |
| OptionalDirectoryEntryRef | getEffectiveUmbrellaDir () const |
| Get the effective umbrella directory for this module: either the one explicitly written in the module map file, or the parent of the umbrella header. | |
| void | addTopHeader (FileEntryRef File) |
| Add a top-level header associated with this module. | |
| void | addTopHeaderFilename (StringRef Filename) |
| Add a top-level header filename associated with this module. | |
| ArrayRef< FileEntryRef > | getTopHeaders (FileManager &FileMgr) |
| The top-level headers associated with this module. | |
| bool | directlyUses (const Module *Requested) |
| Determine whether this module has declared its intention to directly use another module. | |
| void | addRequirement (StringRef Feature, bool RequiredState, const LangOptions &LangOpts, const TargetInfo &Target) |
| Add the given feature requirement to the list of features required by this module. | |
| void | markUnavailable (bool Unimportable) |
| Mark this module and all of its submodules as unavailable. | |
| ModuleRef | findSubmodule (StringRef Name) const |
| Find the submodule with the given name. | |
| Module * | getGlobalModuleFragment () const |
| Get the Global Module Fragment (sub-module) for this module, it there is one. | |
| Module * | getPrivateModuleFragment () const |
| Get the Private Module Fragment (sub-module) for this module, it there is one. | |
| bool | isModuleVisible (const Module *M) const |
| Determine whether the specified module would be visible to a lookup at the end of this module. | |
| unsigned | getVisibilityID () const |
| llvm::iterator_range< submodule_iterator > | submodules () |
| llvm::iterator_range< submodule_const_iterator > | submodules () const |
| void | getExportedModules (SmallVectorImpl< Module * > &Exported) const |
Appends this module's list of exported modules to Exported. | |
| void | print (raw_ostream &OS, unsigned Indent=0, bool Dump=false) const |
| Print the module map for this module to the given stream. | |
| void | dump () const |
| Dump the contents of this module to the given output stream. | |
Static Public Member Functions | |
| static StringRef | getModuleInputBufferName () |
Public Attributes | |
| std::string | Name |
| The name of this module. | |
| SourceLocation | DefinitionLoc |
| The location of the module definition. | |
| ModuleKind | Kind = ModuleMapModule |
| The kind of this module. | |
| Module * | Parent |
| The parent of this module. | |
| OptionalDirectoryEntryRef | Directory |
| The build directory of this module. | |
| std::string | PresumedModuleMapFile |
| The presumed file name for the module map defining this module. | |
| std::variant< std::monostate, FileEntryRef, DirectoryEntryRef > | Umbrella |
| The umbrella header or directory. | |
| SourceLocation | UmbrellaDeclLoc |
| The location of the umbrella header or directory declaration. | |
| ASTFileSignature | Signature |
| The module signature. | |
| std::string | UmbrellaAsWritten |
| The name of the umbrella entry, as written in the module map. | |
| std::string | UmbrellaRelativeToRootModuleDirectory |
| std::string | ExportAsModule |
| The module through which entities defined in this module will eventually be exposed, for use in "private" modules. | |
| std::string | APINotesFile |
| For the debug info, the path to this module's .apinotes file, if any. | |
| SmallVector< UnresolvedHeaderDirective, 1 > | UnresolvedHeaders |
| Headers that are mentioned in the module map file but that we have not yet attempted to resolve to a file on the file system. | |
| SmallVector< UnresolvedHeaderDirective, 1 > | MissingHeaders |
| Headers that are mentioned in the module map file but could not be found on the file system. | |
| SmallVector< Requirement, 2 > | Requirements |
| The set of language features required to use this module. | |
| Module * | ShadowingModule = nullptr |
| A module with the same name that shadows this module. | |
| unsigned | IsUnimportable: 1 |
Whether this module has declared itself unimportable, either because it's missing a requirement from Requirements or because it's been shadowed by another module. | |
| unsigned | HasIncompatibleModuleFile: 1 |
| Whether we tried and failed to load a module file for this module. | |
| unsigned | IsAvailable: 1 |
| Whether this module is available in the current translation unit. | |
| unsigned | IsFromModuleFile: 1 |
| Whether this module was loaded from a module file. | |
| unsigned | IsFramework: 1 |
| Whether this is a framework module. | |
| unsigned | IsExplicit: 1 |
| Whether this is an explicit submodule. | |
| unsigned | IsSystem: 1 |
| Whether this is a "system" module (which assumes that all headers in it are system headers). | |
| unsigned | IsExternC: 1 |
| Whether this is an 'extern "C"' module (which implicitly puts all headers in it within an 'extern "C"' block, and allows the module to be imported within such a block). | |
| unsigned | IsInferred: 1 |
| Whether this is an inferred submodule (module * { ... }). | |
| unsigned | InferSubmodules: 1 |
| Whether we should infer submodules for this module based on the headers. | |
| unsigned | InferExplicitSubmodules: 1 |
| Whether, when inferring submodules, the inferred submodules should be explicit. | |
| unsigned | InferExportWildcard: 1 |
| Whether, when inferring submodules, the inferr submodules should export all modules they import (e.g., the equivalent of "export *"). | |
| unsigned | ConfigMacrosExhaustive: 1 |
| Whether the set of configuration macros is exhaustive. | |
| unsigned | NoUndeclaredIncludes: 1 |
| Whether files in this module can only include non-modular headers and headers from used modules. | |
| unsigned | ModuleMapIsPrivate: 1 |
| Whether this module came from a "private" module map, found next to a regular (public) module map. | |
| unsigned | NamedModuleHasInit: 1 |
| Whether this C++20 named modules doesn't need an initializer. | |
| NameVisibilityKind | NameVisibility |
| The visibility of names within this particular module. | |
| SourceLocation | InferredSubmoduleLoc |
| The location of the inferred submodule. | |
| llvm::SmallVector< ModuleRef, 2 > | Imports |
| The set of modules imported by this module, and on which this module depends. | |
| llvm::SmallVector< ModuleRef, 2 > | AffectingClangModules |
| The set of top-level modules that affected the compilation of this module, but were not imported. | |
| SmallVector< ExportDecl, 2 > | Exports |
| The set of export declarations. | |
| SmallVector< UnresolvedExportDecl, 2 > | UnresolvedExports |
| The set of export declarations that have yet to be resolved. | |
| SmallVector< Module *, 2 > | DirectUses |
| The directly used modules. | |
| SmallVector< ModuleId, 2 > | UnresolvedDirectUses |
| The set of use declarations that have yet to be resolved. | |
| llvm::SmallSetVector< const Module *, 2 > | UndeclaredUses |
When NoUndeclaredIncludes is true, the set of modules this module tried to import but didn't because they are not direct uses. | |
| llvm::SmallVector< LinkLibrary, 2 > | LinkLibraries |
| The set of libraries or frameworks to link against when an entity from this module is used. | |
| bool | UseExportAsModuleLinkName = false |
| Autolinking uses the framework name for linking purposes when this is false and the export_as name otherwise. | |
| std::vector< std::string > | ConfigMacros |
| The set of "configuration macros", which are macros that (intentionally) change how this module is built. | |
| std::vector< UnresolvedConflict > | UnresolvedConflicts |
| The list of conflicts for which the module-id has not yet been resolved. | |
| std::vector< Conflict > | Conflicts |
| The list of conflicts. | |
Describes a module or submodule.
Aligned to 8 bytes to allow for llvm::PointerIntPair<Module *, 3>.
| using clang::Module::ExportDecl = std::pair<ModuleRef, bool> |
| using clang::Module::submodule_const_iterator = std::vector<ModuleRef>::const_iterator |
| using clang::Module::submodule_iterator = std::vector<ModuleRef>::iterator |
| Enumerator | |
|---|---|
| ModuleMapModule | This is a module that was defined by a module map and built out of header files. |
| ModuleHeaderUnit | This is a C++20 header unit. |
| ModuleInterfaceUnit | This is a C++20 module interface unit. |
| ModuleImplementationUnit | This is a C++20 module implementation unit. |
| ModulePartitionInterface | This is a C++20 module partition interface. |
| ModulePartitionImplementation | This is a C++20 module partition implementation. |
| ExplicitGlobalModuleFragment | This is the explicit Global Module Fragment of a modular TU. As per C++ [module.global.frag]. |
| PrivateModuleFragment | This is the private module fragment within some C++ module. |
| ImplicitGlobalModuleFragment | This is an implicit fragment of the global module which contains only language linkage declarations (made in the purview of the named module). |
| Module::Module | ( | ModuleConstructorTag | , |
| StringRef | Name, | ||
| SourceLocation | DefinitionLoc, | ||
| Module * | Parent, | ||
| bool | IsFramework, | ||
| bool | IsExplicit, | ||
| unsigned | VisibilityID ) |
Construct a new module or submodule.
Definition at line 36 of file Module.cpp.
References ConfigMacrosExhaustive, DefinitionLoc, false, HasIncompatibleModuleFile, Hidden, InferExplicitSubmodules, InferExportWildcard, InferSubmodules, IsAvailable, IsExplicit, IsExternC, IsFramework, IsFromModuleFile, IsInferred, IsSystem, IsUnimportable, Module(), ModuleMapIsPrivate, Name, NamedModuleHasInit, NameVisibility, NoUndeclaredIncludes, Parent, and true.
Referenced by clang::Sema::ActOnModuleImport(), addSubmodule(), clang::Sema::currentModuleIsImplementation(), directlyUses(), fullModuleNameIs(), getASTFileKey(), getASTFileName(), getExportedModules(), getFullModuleName(), getGlobalModuleFragment(), getPrivateModuleFragment(), getTopLevelModule(), getTopLevelModule(), isAvailable(), isModuleVisible(), isPartOfFramework(), isSubModuleOf(), isUnimportable(), markUnavailable(), Module(), print(), setASTFileNameAndKey(), and setParent().
|
default |
|
inline |
Definition at line 508 of file Module.h.
Referenced by clang::ModuleMap::addHeader().
| void Module::addRequirement | ( | StringRef | Feature, |
| bool | RequiredState, | ||
| const LangOptions & | LangOpts, | ||
| const TargetInfo & | Target ) |
Add the given feature requirement to the list of features required by this module.
| Feature | The feature that is required by this module (and its submodules). |
| RequiredState | The required state of this feature: true if it must be present, false if it must be absent. |
| LangOpts | The set of language options that will be used to evaluate the availability of this feature. |
| Target | The target options that will be used to evaluate the availability of this feature. |
Definition at line 313 of file Module.cpp.
References Feature, hasFeature(), markUnavailable(), Requirements, and clang::Target.
Referenced by clang::ASTReader::getSubmodule().
|
inline |
|
inline |
| void Module::addTopHeader | ( | FileEntryRef | File | ) |
Add a top-level header associated with this module.
Definition at line 271 of file Module.cpp.
References clang::File.
Referenced by collectModuleHeaderIncludes().
|
inline |
Add a top-level header filename associated with this module.
Definition at line 1001 of file Module.h.
Referenced by clang::ASTReader::getSubmodule().
Determine whether this module has declared its intention to directly use another module.
Definition at line 287 of file Module.cpp.
References fullModuleNameIs(), getTopLevelModule(), isSubModuleOf(), Module(), Name, NoUndeclaredIncludes, Parent, and UndeclaredUses.
Referenced by clang::ModuleMap::diagnoseHeaderInclusion(), and suggestModule().
| LLVM_DUMP_METHOD void Module::dump | ( | ) | const |
Dump the contents of this module to the given output stream.
Definition at line 747 of file APINotesYAMLCompiler.cpp.
References dump().
Referenced by dump().
| ModuleRef Module::findSubmodule | ( | StringRef | Name | ) | const |
Find the submodule with the given name.
Definition at line 350 of file Module.cpp.
References Name.
Referenced by clang::ModuleMap::findOrInferSubmodule(), and clang::CompilerInstance::loadModule().
Whether the full name of this module is equal to joining nameParts with "."s.
This is more efficient than getFullModuleName().
Definition at line 254 of file Module.cpp.
References Module().
Referenced by directlyUses(), and shouldAddRequirement().
|
inline |
The serialized AST file key for this module, if one was created.
Definition at line 961 of file Module.h.
References getTopLevelModule(), and Module().
Referenced by clang::ASTReader::getSubmodule(), clang::CompilerInstance::loadGlobalModuleIndex(), and setASTFileNameAndKey().
|
inline |
The serialized AST file name for this module, if one was created.
Definition at line 955 of file Module.h.
References getTopLevelModule(), and Module().
Referenced by clang::ASTSourceDescriptor::ASTSourceDescriptor(), clang::ASTReader::getSubmodule(), and setASTFileNameAndKey().
| OptionalDirectoryEntryRef Module::getEffectiveUmbrellaDir | ( | ) | const |
Get the effective umbrella directory for this module: either the one explicitly written in the module map file, or the parent of the umbrella header.
Definition at line 263 of file Module.cpp.
References Umbrella.
Referenced by clang::ModuleMap::isHeaderUnavailableInModule().
| void Module::getExportedModules | ( | SmallVectorImpl< Module * > & | Exported | ) | const |
Appends this module's list of exported modules to Exported.
This provides a subset of immediately imported modules (the ones that are directly exported), not the complete set of exported modules.
Definition at line 379 of file Module.cpp.
References Exports, Imports, isSubModuleOf(), Module(), and submodules().
Referenced by clang::ASTReader::makeModuleVisible().
Retrieve the full name of this module, including the path from its top-level module.
| AllowStringLiterals | If true, components that might not be lexically valid as identifiers will be emitted as string literals. |
Definition at line 239 of file Module.cpp.
References Module(), printModuleId(), and clang::Result.
Referenced by clang::Sema::ActOnModuleImport(), checkConfigMacro(), checkModuleImportContext(), clang::Preprocessor::checkModuleIsAvailable(), clang::Sema::CheckRedeclarationModuleOwnership(), clang::Sema::CheckTemplateParameterList(), clang::Sema::diagnoseEquivalentInternalLinkageDeclarations(), clang::ModuleMap::diagnoseHeaderInclusion(), clang::Sema::diagnoseMissingImport(), getInputBufferForModule(), clang::CompilerInstance::loadModule(), clang::Sema::notePreviousDefinition(), PrintPreprocessedTokens(), and clang::TextNodeDumper::VisitImportDecl().
| Module * Module::getGlobalModuleFragment | ( | ) | const |
Get the Global Module Fragment (sub-module) for this module, it there is one.
Definition at line 357 of file Module.cpp.
References isNamedModuleUnit(), Module(), and submodules().
|
inline |
Definition at line 502 of file Module.h.
Referenced by collectModuleHeaderIncludes(), print(), and violatesPrivateInclude().
|
inlinestatic |
Definition at line 1080 of file Module.h.
Referenced by getInputBufferForModule().
|
inline |
Get the primary module interface name from a partition.
Definition at line 905 of file Module.h.
References getTopLevelModuleName(), isGlobalModule(), isModulePartition(), isPrivateModule(), and Name.
Referenced by clang::Sema::ActOnModuleImport(), clang::Sema::diagnoseMissingImport(), and clang::getPrimaryModuleHash().
| Module * Module::getPrivateModuleFragment | ( | ) | const |
Get the Private Module Fragment (sub-module) for this module, it there is one.
Definition at line 368 of file Module.cpp.
References isNamedModuleUnit(), Module(), and submodules().
| ArrayRef< FileEntryRef > Module::getTopHeaders | ( | FileManager & | FileMgr | ) |
The top-level headers associated with this module.
Definition at line 276 of file Module.cpp.
|
inline |
Retrieve the top-level module for this (sub)module, which may be this module.
Definition at line 940 of file Module.h.
References Module().
Referenced by clang::Sema::ArgumentDependentLookup(), checkConfigMacros(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), clang::ModuleMap::diagnoseHeaderInclusion(), clang::Sema::diagnoseMissingImport(), directlyUses(), clang::ModuleMap::findModuleForHeader(), getASTFileKey(), getASTFileName(), clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), clang::ASTWriter::GetDeclRef(), clang::ASTWriter::getLocalOrImportedSubmoduleID(), getTopLevelModuleName(), getTopLevelOrNull(), clang::Decl::getTopLevelOwningNamedModule(), clang::ModuleMap::KnownHeader::isAccessibleFrom(), isForBuilding(), clang::Sema::isModuleVisible(), clang::Sema::IsRedefinitionInModule(), clang::CompilerInstance::loadModule(), AsyncModuleCompile::moduleLoadSkipped(), clang::ModuleMap::resolveUses(), setASTFileNameAndKey(), shouldFunctionGenerateHereOnly(), and shouldVarGenerateHereOnly().
| const Module * Module::getTopLevelModule | ( | ) | const |
Retrieve the top-level module for this (sub)module, which may be this module.
Definition at line 201 of file Module.cpp.
References Module(), and clang::Result.
|
inline |
Retrieve the name of the top-level module.
Definition at line 950 of file Module.h.
References getTopLevelModule(), and Name.
Referenced by clang::CompilerInstance::cloneForModuleCompile(), compileModuleImpl(), DiagnoseInvisibleNamespace(), clang::Sema::diagnoseMissingImport(), clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), getPrimaryModuleInterfaceName(), clang::ASTReader::getSubmodule(), isForBuilding(), and clang::Preprocessor::LeaveSubmodule().
|
inline |
Retrieve the umbrella directory as written.
Definition at line 977 of file Module.h.
References Umbrella, UmbrellaAsWritten, and UmbrellaRelativeToRootModuleDirectory.
Referenced by collectModuleHeaderIncludes(), clang::ASTReader::getSubmodule(), and print().
|
inline |
Retrieve the umbrella header as written.
Definition at line 985 of file Module.h.
References Umbrella, UmbrellaAsWritten, and UmbrellaRelativeToRootModuleDirectory.
Referenced by collectAllSubModulesWithUmbrellaHeader(), collectModuleHeaderIncludes(), getInputBufferForModule(), clang::ASTReader::getSubmodule(), and print().
|
inline |
Definition at line 1062 of file Module.h.
Referenced by clang::VisibleModuleSet::getImportLoc().
|
inline |
Determine whether this module is available for use within the current translation unit.
Definition at line 786 of file Module.h.
References IsAvailable.
Referenced by clang::Preprocessor::checkModuleIsAvailable(), collectModuleHeaderIncludes(), clang::ModuleMap::KnownHeader::isAvailable(), isBetterKnownHeader(), and clang::ModuleMap::isHeaderUnavailableInModule().
| bool Module::isAvailable | ( | const LangOptions & | LangOpts, |
| const TargetInfo & | Target, | ||
| Requirement & | Req, | ||
| UnresolvedHeaderDirective & | MissingHeader, | ||
| Module *& | ShadowingModule ) const |
Determine whether this module is available for use within the current translation unit.
| LangOpts | The language options used for the current translation unit. |
| Target | The target options used for the current translation unit. |
| Req | If this module is unavailable because of a missing requirement, this parameter will be set to one of the requirements that is not met for use of this module. |
| MissingHeader | If this module is unavailable because of a missing header, this parameter will be set to one of the missing headers. |
| ShadowingModule | If this module is unavailable because it is shadowed, this parameter will be set to the shadowing module. |
Definition at line 171 of file Module.cpp.
References IsAvailable, isUnimportable(), Module(), ShadowingModule, and clang::Target.
|
inline |
Definition at line 441 of file Module.h.
References ExplicitGlobalModuleFragment, and Kind.
Referenced by DiagnoseInvisibleNamespace(), clang::Sema::diagnoseMissingImport(), clang::Decl::isFromExplicitGlobalModule(), and isGlobalModule().
| bool Module::isForBuilding | ( | const LangOptions & | LangOpts | ) | const |
Determine whether this module can be built in this compilation.
Definition at line 155 of file Module.cpp.
References clang::LangOptions::CurrentModule, getTopLevelModule(), getTopLevelModuleName(), clang::LangOptions::isCompilingModule(), IsFramework, and clang::LangOptions::ModuleName.
Referenced by clang::Sema::ActOnModuleImport(), and clang::ModuleMap::addHeader().
|
inline |
Does this Module scope describe a fragment of the global module within some C++ module.
Definition at line 438 of file Module.h.
References isExplicitGlobalModule(), and isImplicitGlobalModule().
Referenced by clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), clang::getPrimaryModuleHash(), getPrimaryModuleInterfaceName(), clang::Decl::isFromGlobalModule(), clang::Sema::isModuleVisible(), and clang::VisibleModuleSet::setVisible().
|
inline |
Is this module have similar semantics as headers.
Definition at line 866 of file Module.h.
References isHeaderUnit(), and isModuleMapModule().
Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::getPrimaryModuleHash(), clang::Sema::hasAcceptableDefinition(), clang::Sema::IsRedefinitionInModule(), and clang::CodeGen::CodeGenModule::Release().
|
inline |
Is this module a header unit.
Definition at line 887 of file Module.h.
References Kind, and ModuleHeaderUnit.
Referenced by clang::Sema::ActOnModuleImport(), clang::Decl::isFromHeaderUnit(), isHeaderLikeModule(), and clang::Parser::ParseTopLevelDecl().
|
inline |
Definition at line 444 of file Module.h.
References ImplicitGlobalModuleFragment, and Kind.
Referenced by clang::Sema::ArgumentDependentLookup(), clang::Sema::diagnoseMissingImport(), and isGlobalModule().
|
inline |
Definition at line 889 of file Module.h.
References isModulePartition(), Kind, and ModuleInterfaceUnit.
Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnModuleImport(), isNamedModuleUnit(), clang::CodeGen::CodeGenModule::Release(), shouldFunctionGenerateHereOnly(), and shouldVarGenerateHereOnly().
|
inline |
Is this a module implementation.
Definition at line 882 of file Module.h.
References Kind, and ModuleImplementationUnit.
Referenced by clang::Sema::CheckRedeclarationModuleOwnership(), clang::Sema::currentModuleIsImplementation(), and isNamedModuleUnit().
|
inline |
Definition at line 898 of file Module.h.
References Kind, ModuleInterfaceUnit, and ModulePartitionInterface.
|
inline |
Definition at line 450 of file Module.h.
References Kind, and ModuleMapModule.
Referenced by clang::Sema::diagnoseMissingImport(), isHeaderLikeModule(), and clang::Preprocessor::markClangModuleAsAffecting().
|
inline |
Is this a module partition.
Definition at line 871 of file Module.h.
References Kind, ModulePartitionImplementation, and ModulePartitionInterface.
Referenced by clang::Sema::CheckRedeclarationModuleOwnership(), getPrimaryModuleInterfaceName(), isImportingModuleUnitFromSameModule(), and isInterfaceOrPartition().
|
inline |
Is this a module partition implementation unit.
Definition at line 877 of file Module.h.
References Kind, and ModulePartitionImplementation.
Referenced by clang::Sema::ActOnModuleImport(), clang::Sema::currentModuleIsImplementation(), and isImportingModuleUnitFromSameModule().
Determine whether the specified module would be visible to a lookup at the end of this module.
FIXME: This may return incorrect results for (submodules of) the module currently being built, if it's queried before we see all of its imports.
Definition at line 1056 of file Module.h.
References Module().
Referenced by clang::Sema::isModuleVisible().
|
inline |
Does this Module is a named module of a standard named module?
Definition at line 423 of file Module.h.
References Kind, ModuleImplementationUnit, ModuleInterfaceUnit, ModulePartitionImplementation, ModulePartitionInterface, and PrivateModuleFragment.
Referenced by clang::Sema::ActOnModuleImport(), clang::Sema::ArgumentDependentLookup(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), clang::Sema::CheckRedeclarationModuleOwnership(), isImportingModuleUnitFromSameModule(), clang::Decl::isInNamedModule(), clang::Sema::IsRedefinitionInModule(), isRequiredDecl(), clang::ASTUnit::LoadFromASTFile(), makeTransitiveImportsVisible(), and clang::ASTContext::setCurrentNamedModule().
|
inline |
Definition at line 902 of file Module.h.
References NamedModuleHasInit.
Referenced by clang::Sema::ActOnEndOfTranslationUnit().
|
inline |
Is this a C++20 named module unit.
Definition at line 894 of file Module.h.
References isInterfaceOrPartition(), and isModuleImplementation().
Referenced by clang::CXX20ModulesGenerator::getEmittingModule(), getGlobalModuleFragment(), and getPrivateModuleFragment().
|
inline |
Determine whether this module is a part of a framework, either because it is a framework module or because it is a submodule of a framework module.
Definition at line 825 of file Module.h.
References Module().
Referenced by clang::ModuleMap::shouldImportRelativeToBuiltinIncludeDir().
|
inline |
Definition at line 448 of file Module.h.
References Kind, and PrivateModuleFragment.
Referenced by clang::Sema::ArgumentDependentLookup(), clang::Sema::CheckRedeclarationModuleOwnership(), clang::Sema::diagnoseMissingImport(), and getPrimaryModuleInterfaceName().
|
inline |
Determine whether this module is a subframework of another framework.
Definition at line 835 of file Module.h.
References IsFramework, and Parent.
Referenced by inferFrameworkLink().
|
inline |
Check if this module is a (possibly transitive) submodule of Other.
The 'A is a submodule of B' relation is a partial order based on the the parent-child relationship between individual modules.
Returns false if Other is nullptr.
Definition at line 193 of file Module.cpp.
References Module(), clang::Other, and Parent.
Referenced by directlyUses(), getExportedModules(), and clang::ModuleMap::isHeaderUnavailableInModule().
|
inline |
Determine whether this module has been declared unimportable.
Definition at line 763 of file Module.h.
References IsUnimportable.
Referenced by isAvailable(), and clang::ASTReader::makeModuleVisible().
| bool Module::isUnimportable | ( | const LangOptions & | LangOpts, |
| const TargetInfo & | Target, | ||
| Requirement & | Req, | ||
| Module *& | ShadowingModule ) const |
Determine whether this module has been declared unimportable.
| LangOpts | The language options used for the current translation unit. |
| Target | The target options used for the current translation unit. |
| Req | If this module is unimportable because of a missing requirement, this parameter will be set to one of the requirements that is not met for use of this module. |
| ShadowingModule | If this module is unimportable because it is shadowed, this parameter will be set to the shadowing module. |
Definition at line 126 of file Module.cpp.
References hasFeature(), IsUnimportable, Module(), ShadowingModule, and clang::Target.
| void Module::markUnavailable | ( | bool | Unimportable | ) |
Mark this module and all of its submodules as unavailable.
Definition at line 325 of file Module.cpp.
References IsAvailable, IsUnimportable, Module(), and submodules().
Referenced by addRequirement().
Print the module map for this module to the given stream.
Definition at line 455 of file Module.cpp.
References ConfigMacros, ConfigMacrosExhaustive, Conflicts, DirectUses, ExportAsModule, Exports, getHeaders(), getUmbrellaDirAsWritten(), getUmbrellaHeaderAsWritten(), HK_Excluded, HK_Normal, HK_Private, HK_PrivateTextual, HK_Textual, Imports, clang::Indent(), InferExplicitSubmodules, InferExportWildcard, InferSubmodules, IsExplicit, IsExternC, IsFramework, IsSystem, Kind, clang::Library, LinkLibraries, MissingHeaders, Module(), Name, printModuleId(), Requirements, submodules(), clang::Unresolved, UnresolvedConflicts, UnresolvedDirectUses, UnresolvedExports, and UnresolvedHeaders.
Referenced by clang::RewriteIncludesAction::BeginSourceFileAction(), clang::CompilerInstance::cloneForModuleCompile(), clang::ModuleMap::dump(), and clang::PrintPreprocessedAction::ExecuteAction().
|
inline |
Set the serialized module file for the top-level module of this module.
Definition at line 967 of file Module.h.
References getASTFileKey(), getASTFileName(), getTopLevelModule(), and Module().
Referenced by clang::ASTReader::getSubmodule().
|
inline |
|
inline |
Definition at line 1067 of file Module.h.
Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::SemaCodeCompletion::CodeCompleteModuleImport(), collectAllSubModulesWithUmbrellaHeader(), collectModuleHeaderIncludes(), clang::CodeGen::CodeGenModule::EmitTopLevelDecl(), clang::DumpModuleInfoAction::ExecuteAction(), getExportedModules(), getGlobalModuleFragment(), getPrivateModuleFragment(), hasPrivateSubmodules(), clang::CompilerInstance::loadModule(), markUnavailable(), and print().
|
inline |
| llvm::SmallVector<ModuleRef, 2> clang::Module::AffectingClangModules |
The set of top-level modules that affected the compilation of this module, but were not imported.
Definition at line 662 of file Module.h.
Referenced by clang::ASTReader::getSubmodule().
| std::string clang::Module::APINotesFile |
For the debug info, the path to this module's .apinotes file, if any.
Definition at line 420 of file Module.h.
Referenced by clang::api_notes::APINotesManager::loadCurrentModuleAPINotes().
| std::vector<std::string> clang::Module::ConfigMacros |
The set of "configuration macros", which are macros that (intentionally) change how this module is built.
Definition at line 728 of file Module.h.
Referenced by checkConfigMacros(), clang::ASTReader::getSubmodule(), and print().
| unsigned clang::Module::ConfigMacrosExhaustive |
Whether the set of configuration macros is exhaustive.
When the set of configuration macros is exhaustive, meaning that no identifier not in this list should affect how the module is built.
Definition at line 624 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), Module(), and print().
| std::vector<Conflict> clang::Module::Conflicts |
The list of conflicts.
Definition at line 753 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), print(), and clang::ModuleMap::resolveConflicts().
| SourceLocation clang::Module::DefinitionLoc |
The location of the module definition.
Definition at line 346 of file Module.h.
Referenced by clang::Preprocessor::checkModuleIsAvailable(), clang::ModuleMap::getContainingModuleMapFileID(), clang::ASTReader::getSubmodule(), clang::CompilerInstance::loadGlobalModuleIndex(), Module(), and clang::Sema::notePreviousDefinition().
| OptionalDirectoryEntryRef clang::Module::Directory |
The build directory of this module.
This is the directory in which the module is notionally built, and relative to which its headers are found.
Definition at line 394 of file Module.h.
Referenced by clang::ASTSourceDescriptor::ASTSourceDescriptor(), clang::CompilerInstance::cloneForModuleCompile(), clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), clang::ASTReader::getSubmodule(), and prepareToBuildModule().
| SmallVector<Module *, 2> clang::Module::DirectUses |
| std::string clang::Module::ExportAsModule |
The module through which entities defined in this module will eventually be exposed, for use in "private" modules.
Definition at line 417 of file Module.h.
Referenced by clang::ModuleMap::addLinkAsDependency(), clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), clang::ASTReader::getSubmodule(), and print().
| SmallVector<ExportDecl, 2> clang::Module::Exports |
The set of export declarations.
Definition at line 671 of file Module.h.
Referenced by clang::Sema::ActOnModuleImport(), clang::DumpModuleInfoAction::ExecuteAction(), getExportedModules(), clang::ASTReader::getSubmodule(), makeTransitiveImportsVisible(), print(), and clang::ModuleMap::resolveExports().
| unsigned clang::Module::HasIncompatibleModuleFile |
| llvm::SmallVector<ModuleRef, 2> clang::Module::Imports |
The set of modules imported by this module, and on which this module depends.
Definition at line 658 of file Module.h.
Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnModuleDecl(), clang::Sema::ActOnModuleImport(), addLinkOptionsPostorder(), clang::DumpModuleInfoAction::ExecuteAction(), getExportedModules(), clang::ASTReader::getSubmodule(), makeTransitiveImportsVisible(), and print().
| unsigned clang::Module::InferExplicitSubmodules |
Whether, when inferring submodules, the inferred submodules should be explicit.
Definition at line 611 of file Module.h.
Referenced by clang::ModuleMap::findOrInferSubmodule(), clang::ASTReader::getSubmodule(), Module(), and print().
| unsigned clang::Module::InferExportWildcard |
Whether, when inferring submodules, the inferr submodules should export all modules they import (e.g., the equivalent of "export *").
Definition at line 616 of file Module.h.
Referenced by clang::ModuleMap::findOrInferSubmodule(), clang::ASTReader::getSubmodule(), Module(), and print().
| SourceLocation clang::Module::InferredSubmoduleLoc |
| unsigned clang::Module::InferSubmodules |
Whether we should infer submodules for this module based on the headers.
Submodules can only be inferred for modules with an umbrella header.
Definition at line 606 of file Module.h.
Referenced by clang::ModuleMap::findOrInferSubmodule(), clang::ASTReader::getSubmodule(), clang::ModuleMap::isHeaderUnavailableInModule(), Module(), and print().
| unsigned clang::Module::IsAvailable |
Whether this module is available in the current translation unit.
If the module is missing headers or does not meet all requirements then this bit will be 0.
Definition at line 572 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), isAvailable(), isAvailable(), markUnavailable(), and Module().
| unsigned clang::Module::IsExplicit |
| unsigned clang::Module::IsExternC |
Whether this is an 'extern "C"' module (which implicitly puts all headers in it within an 'extern "C"' block, and allows the module to be imported within such a block).
Definition at line 595 of file Module.h.
Referenced by checkModuleImportContext(), collectModuleHeaderIncludes(), getInputBufferForModule(), clang::ASTReader::getSubmodule(), Module(), and print().
| unsigned clang::Module::IsFramework |
Whether this is a framework module.
Definition at line 580 of file Module.h.
Referenced by appendSubframeworkPaths(), clang::ModuleMap::diagnoseHeaderInclusion(), clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), inferFrameworkLink(), isForBuilding(), isSubFramework(), Module(), and print().
| unsigned clang::Module::IsFromModuleFile |
Whether this module was loaded from a module file.
Definition at line 576 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), clang::CompilerInstance::loadModule(), and Module().
| unsigned clang::Module::IsInferred |
Whether this is an inferred submodule (module * { ... }).
Definition at line 599 of file Module.h.
Referenced by clang::ModuleMap::getModuleMapFileIDForUniquing(), Module(), and clang::ModuleMap::setInferredModuleAllowedBy().
| unsigned clang::Module::IsSystem |
Whether this is a "system" module (which assumes that all headers in it are system headers).
Definition at line 589 of file Module.h.
Referenced by checkPrivateAPINotesName(), clang::CompilerInstance::cloneForModuleCompile(), clang::ASTReader::getSubmodule(), clang::Preprocessor::LookupFile(), Module(), prepareToBuildModule(), print(), clang::PCHValidator::ReadDiagnosticOptions(), and clang::ModuleMap::shouldImportRelativeToBuiltinIncludeDir().
| unsigned clang::Module::IsUnimportable |
Whether this module has declared itself unimportable, either because it's missing a requirement from Requirements or because it's been shadowed by another module.
Definition at line 561 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), isUnimportable(), isUnimportable(), markUnavailable(), and Module().
| ModuleKind clang::Module::Kind = ModuleMapModule |
The kind of this module.
Definition at line 385 of file Module.h.
Referenced by clang::Sema::ActOnModuleDecl(), clang::Sema::ActOnModuleImport(), AddOrdinaryNameResults(), clang::DumpModuleInfoAction::ExecuteAction(), clang::Decl::getOwningModuleForLinkage(), clang::ASTReader::getSubmodule(), isExplicitGlobalModule(), isHeaderUnit(), isImplicitGlobalModule(), isInterfaceOrPartition(), isModuleImplementation(), isModuleInterfaceUnit(), isModuleMapModule(), isModulePartition(), isModulePartitionImplementation(), isNamedModule(), isPrivateModule(), and print().
| llvm::SmallVector<LinkLibrary, 2> clang::Module::LinkLibraries |
The set of libraries or frameworks to link against when an entity from this module is used.
Definition at line 720 of file Module.h.
Referenced by addLinkOptionsPostorder(), clang::ASTReader::getSubmodule(), inferFrameworkLink(), and print().
| SmallVector<UnresolvedHeaderDirective, 1> clang::Module::MissingHeaders |
Headers that are mentioned in the module map file but could not be found on the file system.
Definition at line 541 of file Module.h.
Referenced by collectModuleHeaderIncludes(), clang::ASTReader::getSubmodule(), and print().
| unsigned clang::Module::ModuleMapIsPrivate |
Whether this module came from a "private" module map, found next to a regular (public) module map.
Definition at line 634 of file Module.h.
Referenced by clang::api_notes::APINotesManager::getCurrentModuleAPINotes(), clang::ASTReader::getSubmodule(), and Module().
| std::string clang::Module::Name |
The name of this module.
Definition at line 343 of file Module.h.
Referenced by clang::Sema::ActOnModuleImport(), clang::ModuleMap::addLinkAsDependency(), addSubmodule(), addSubmodule(), appendSubframeworkPaths(), clang::Preprocessor::checkModuleIsAvailable(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), checkPrivateAPINotesName(), compileModuleBehindLockOrRead(), compileModuleImpl(), clang::ModuleMap::diagnoseHeaderInclusion(), directlyUses(), clang::DumpModuleInfoAction::ExecuteAction(), findSubmodule(), clang::index::generateFullUSRForModule(), clang::index::generateUSRFragmentForModule(), clang::HeaderSearch::getCachedModuleFileName(), clang::HeaderSearch::getPrebuiltImplicitModuleFileName(), getPrimaryModuleInterfaceName(), getTopLevelModuleName(), inferFrameworkLink(), clang::CompilerInstance::loadGlobalModuleIndex(), clang::CompilerInstance::loadModule(), llvm::yaml::MappingTraits< Module >::mapping(), Module(), print(), readASTAfterCompileModule(), clang::PCHValidator::ReadDiagnosticOptions(), clang::ModuleMap::resolveLinkAsDependencies(), and setParent().
| unsigned clang::Module::NamedModuleHasInit |
Whether this C++20 named modules doesn't need an initializer.
This is only meaningful for C++20 modules.
Definition at line 639 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), isNamedModuleInterfaceHasInit(), and Module().
| NameVisibilityKind clang::Module::NameVisibility |
The visibility of names within this particular module.
Definition at line 651 of file Module.h.
Referenced by clang::ASTReader::makeModuleVisible(), clang::ASTReader::makeNamesVisible(), and Module().
| unsigned clang::Module::NoUndeclaredIncludes |
Whether files in this module can only include non-modular headers and headers from used modules.
Definition at line 629 of file Module.h.
Referenced by directlyUses(), Module(), needModuleLookup(), and suggestModule().
| Module* clang::Module::Parent |
The parent of this module.
This will be NULL for the top-level module.
Definition at line 389 of file Module.h.
Referenced by clang::Sema::ActOnModuleImport(), addLinkOptionsPostorder(), appendSubframeworkPaths(), clang::Sema::CheckRedeclarationModuleOwnership(), collectModuleHeaderIncludes(), directlyUses(), clang::index::generateFullUSRForModule(), getNumModuleIdentifiers(), clang::Decl::getOwningModuleForLinkage(), clang::index::IndexingContext::importedModule(), clang::ModuleMap::isHeaderUnavailableInModule(), isSubFramework(), isSubModule(), isSubModuleOf(), clang::ModuleMap::mayShadowNewModule(), Module(), reportModuleReferences(), and setParent().
| std::string clang::Module::PresumedModuleMapFile |
The presumed file name for the module map defining this module.
Only non-empty when building from preprocessed source.
Definition at line 398 of file Module.h.
Referenced by clang::FrontendAction::BeginSourceFile(), and clang::ASTReader::getSubmodule().
| SmallVector<Requirement, 2> clang::Module::Requirements |
The set of language features required to use this module.
If any of these requirements are not available, the IsAvailable bit will be false to indicate that this (sub)module is not available.
Definition at line 552 of file Module.h.
Referenced by addRequirement(), clang::ASTReader::getSubmodule(), and print().
A module with the same name that shadows this module.
Definition at line 555 of file Module.h.
Referenced by isAvailable(), and isUnimportable().
| ASTFileSignature clang::Module::Signature |
The module signature.
Definition at line 407 of file Module.h.
Referenced by clang::ASTReader::getSubmodule().
| std::variant<std::monostate, FileEntryRef, DirectoryEntryRef> clang::Module::Umbrella |
The umbrella header or directory.
Definition at line 401 of file Module.h.
Referenced by getEffectiveUmbrellaDir(), getUmbrellaDirAsWritten(), getUmbrellaHeaderAsWritten(), clang::ModuleMap::setUmbrellaDirAsWritten(), and clang::ModuleMap::setUmbrellaHeaderAsWritten().
| std::string clang::Module::UmbrellaAsWritten |
The name of the umbrella entry, as written in the module map.
Definition at line 410 of file Module.h.
Referenced by getUmbrellaDirAsWritten(), getUmbrellaHeaderAsWritten(), clang::ModuleMap::setUmbrellaDirAsWritten(), and clang::ModuleMap::setUmbrellaHeaderAsWritten().
| SourceLocation clang::Module::UmbrellaDeclLoc |
The location of the umbrella header or directory declaration.
Definition at line 404 of file Module.h.
Referenced by clang::ModuleMap::setUmbrellaDirAsWritten(), and clang::ModuleMap::setUmbrellaHeaderAsWritten().
| std::string clang::Module::UmbrellaRelativeToRootModuleDirectory |
Definition at line 413 of file Module.h.
Referenced by getUmbrellaDirAsWritten(), getUmbrellaHeaderAsWritten(), clang::ModuleMap::setUmbrellaDirAsWritten(), and clang::ModuleMap::setUmbrellaHeaderAsWritten().
| llvm::SmallSetVector<const Module *, 2> clang::Module::UndeclaredUses |
When NoUndeclaredIncludes is true, the set of modules this module tried to import but didn't because they are not direct uses.
Definition at line 699 of file Module.h.
Referenced by directlyUses().
| std::vector<UnresolvedConflict> clang::Module::UnresolvedConflicts |
The list of conflicts for which the module-id has not yet been resolved.
Definition at line 741 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), print(), and clang::ModuleMap::resolveConflicts().
| SmallVector<ModuleId, 2> clang::Module::UnresolvedDirectUses |
| SmallVector<UnresolvedExportDecl, 2> clang::Module::UnresolvedExports |
The set of export declarations that have yet to be resolved.
Definition at line 689 of file Module.h.
Referenced by clang::ASTReader::getSubmodule(), print(), and clang::ModuleMap::resolveExports().
| SmallVector<UnresolvedHeaderDirective, 1> clang::Module::UnresolvedHeaders |
Headers that are mentioned in the module map file but that we have not yet attempted to resolve to a file on the file system.
Definition at line 537 of file Module.h.
Referenced by print(), and clang::ModuleMap::resolveHeaderDirectives().
Autolinking uses the framework name for linking purposes when this is false and the export_as name otherwise.
Definition at line 724 of file Module.h.
Referenced by clang::ModuleMap::addLinkAsDependency(), and addLinkOptionsPostorder().