internal TypeMap(NamedTypeSymbol containingType, ImmutableArray <TypeParameterSymbol> typeParameters, ImmutableArray <TypeWithAnnotations> typeArguments) : base(ForType(containingType)) { for (int i = 0; i < typeParameters.Length; i++) { TypeParameterSymbol tp = typeParameters[i]; TypeWithAnnotations ta = typeArguments[i]; if (!ta.Is(tp)) { Mapping.Add(tp, ta); } } }
private static SmallDictionary <TypeParameterSymbol, TypeWithAnnotations> ConstructMapping(ImmutableArray <TypeParameterSymbol> from, ImmutableArray <TypeWithAnnotations> to) { var mapping = new SmallDictionary <TypeParameterSymbol, TypeWithAnnotations>(ReferenceEqualityComparer.Instance); Debug.Assert(from.Length == to.Length); for (int i = 0; i < from.Length; i++) { TypeParameterSymbol tp = from[i]; TypeWithAnnotations ta = to[i]; if (!ta.Is(tp)) { mapping.Add(tp, ta); } } return(mapping); }