| File: Symbols\AbstractTypeParameterMap.cs | Web Access |
| Project: src\roslyn\src\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj (Microsoft.CodeAnalysis.CSharp) |
// 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. #nullable disable using System; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Microsoft.CodeAnalysis.CSharp.Symbols { [DebuggerDisplay("{GetDebuggerDisplay(), nq}")] internal abstract class AbstractTypeParameterMap : AbstractTypeMap { protected readonly SmallDictionary<TypeParameterSymbol, TypeWithAnnotations> Mapping; protected AbstractTypeParameterMap(SmallDictionary<TypeParameterSymbol, TypeWithAnnotations> mapping) { this.Mapping = mapping; } protected sealed override TypeWithAnnotations SubstituteTypeParameter(TypeParameterSymbol typeParameter) { // It might need to be substituted directly. TypeWithAnnotations result; if (Mapping.TryGetValue(typeParameter, out result)) { return result; } return TypeWithAnnotations.Create(typeParameter); } private string GetDebuggerDisplay() { var result = new StringBuilder("["); result.Append(this.GetType().Name); foreach (var kv in Mapping) { result.Append(' ').Append(kv.Key).Append(':').Append(kv.Value.Type); } return result.Append(']').ToString(); } } }