/// <nodoc/> protected ModuleLiteral(ModuleLiteralId id, QualifierValue qualifier, ModuleLiteral outerScope, LineInfo location) : base(location) { Id = id; m_qualifier = qualifier; OuterScope = outerScope; }
/// <summary> /// Creates a module key. /// </summary> public static QualifiedModuleId Create(ModuleLiteralId id, QualifierId qualifierId) { Contract.Requires(id.IsValid); Contract.Requires(qualifierId.IsValid); return(new QualifiedModuleId(id, qualifierId)); }
/// <nodoc/> internal FileModuleLiteral(AbsolutePath path, QualifierValue qualifier, GlobalModuleLiteral outerScope, Package package, ModuleRegistry moduleRegistry, LineMap lineMap) : this(ModuleLiteralId.Create(path), qualifier, outerScope, package, lineMap) { Contract.Requires(path.IsValid); Contract.Requires(lineMap != null); m_moduleRegistry = moduleRegistry; }
/// <nodoc/> public TypeOrNamespaceModuleLiteral(ModuleLiteralId id, QualifierValue qualifier, ModuleLiteral outerScope, LineInfo location) : base(id, qualifier, outerScope, location) { Contract.Requires(id.Name.IsValid, "id.Name.IsValid"); Contract.Requires(outerScope != null, "outerScope != null"); // Only in V1 type or namespace module literals are unqualified. In V2 unqualified is never used for type or namespace literals. Contract.Requires(qualifier == QualifierValue.Unqualified || outerScope.Qualifier.QualifierId == qualifier.QualifierId); }
/// <nodoc/> internal FileModuleLiteral(ModuleLiteralId id, QualifierValue qualifier, GlobalModuleLiteral outerScope, Package package, LineMap lineMap) : base(id, qualifier, outerScope, location: default(LineInfo)) { Contract.Requires(id.Path.IsValid); Contract.Requires(package != null); Contract.Requires(lineMap != null); Package = package; m_partialSymbolsCache = Lazy.Create(() => new ConcurrentDictionary <FullSymbol, ModuleBinding>()); LineMap = lineMap; }
/// <summary> /// Constructs module literal for namespace. /// </summary> protected static TypeOrNamespaceModuleLiteral CreateTypeOrNamespaceModule(FullSymbol namespaceName, ModuleLiteral outerScope, LineInfo location) { Contract.Requires(namespaceName.IsValid); Contract.Requires(outerScope != null); Contract.Requires(outerScope.IsFileOrGlobal); ModuleLiteralId moduleId = outerScope.Id.WithName(namespaceName); return(new TypeOrNamespaceModuleLiteral(moduleId, qualifier: QualifierValue.Unqualified, outerScope: outerScope, location: location)); }
/// <nodoc /> protected static ModuleLiteralId ReadModuleLiteralId(BuildXLReader reader) { var name = reader.ReadFullSymbol(); var path = reader.ReadAbsolutePath(); // Name and Id could be invalid in case of a fake type or namespace. if (!name.IsValid && !path.IsValid) { return(default(ModuleLiteralId)); } return(ModuleLiteralId.Create(path).WithName(name)); }
private FileModuleLiteral GetFileModuleInstanceFromImportOrExportDeclaration( ModuleRegistry moduleRegistry, AbsolutePath referencedPath) { var importedModuleId = ModuleLiteralId.Create(referencedPath); // Get the uninstantiated version of this file module. UninstantiatedModuleInfo importedModuleInfo = moduleRegistry.GetUninstantiatedModuleInfoByModuleId(importedModuleId); // Evaluate qualifier if specified. QualifierValue qualifierValue = Qualifier; // Instantiate this file module according to the qualifier. FileModuleLiteral importedModule = importedModuleInfo.FileModuleLiteral.InstantiateFileModuleLiteral(moduleRegistry, qualifierValue); return(importedModule); }
/// <nodoc /> protected static void Write(BuildXLWriter writer, ModuleLiteralId moduleId) { writer.Write(moduleId.Name); writer.Write(moduleId.Path); }
/// <nodoc /> private QualifiedModuleId(ModuleLiteralId id, QualifierId qualifier) { Id = id; QualifierId = qualifier; m_hashCode = HashCodeHelper.Combine(Id.GetHashCode(), QualifierId.GetHashCode()); }