| File: ReferenceManager\ModuleReferences.cs | Web Access |
| Project: src\roslyn\src\Compilers\Core\Portable\Microsoft.CodeAnalysis.csproj (Microsoft.CodeAnalysis) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Collections.Immutable; using System.Diagnostics; using Microsoft.CodeAnalysis.Symbols; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis { /// <summary> /// A record of the assemblies referenced by a module (their identities, symbols, and unification). /// </summary> internal sealed class ModuleReferences<TAssemblySymbol> where TAssemblySymbol : class, IAssemblySymbolInternal { /// <summary> /// Identities of referenced assemblies (those that are or will be emitted to metadata). /// </summary> /// <remarks> /// Names[i] is the identity of assembly Symbols[i]. /// </remarks> public readonly ImmutableArray<AssemblyIdentity> Identities; /// <summary> /// Assembly symbols that the identities are resolved against. /// </summary> /// <remarks> /// Names[i] is the identity of assembly Symbols[i]. /// Unresolved references are represented as MissingAssemblySymbols. /// </remarks> public readonly ImmutableArray<TAssemblySymbol> Symbols; /// <summary> /// A subset of <see cref="Symbols"/> that correspond to references with non-matching (unified) /// version along with unification details. /// </summary> public readonly ImmutableArray<UnifiedAssembly<TAssemblySymbol>> UnifiedAssemblies; public ModuleReferences( ImmutableArray<AssemblyIdentity> identities, ImmutableArray<TAssemblySymbol> symbols, ImmutableArray<UnifiedAssembly<TAssemblySymbol>> unifiedAssemblies) { Debug.Assert(!identities.IsDefault); Debug.Assert(!symbols.IsDefault); Debug.Assert(identities.Length == symbols.Length); Debug.Assert(!unifiedAssemblies.IsDefault); this.Identities = identities; this.Symbols = symbols; this.UnifiedAssemblies = unifiedAssemblies; } } }