private List<Cci.IGenericTypeParameter> GetConsolidatedTypeParameters(Cci.ITypeDefinition typeDef, Cci.INamedTypeDefinition owner) { List<Cci.IGenericTypeParameter> result = null; Cci.INestedTypeDefinition nestedTypeDef = typeDef.AsNestedTypeDefinition(_context); if (nestedTypeDef != null) { result = GetConsolidatedTypeParameters(nestedTypeDef.ContainingTypeDefinition, owner); } if (typeDef.GenericParameterCount > 0) { ushort index = 0; if (result == null) { result = new List<Cci.IGenericTypeParameter>(); } else { index = (ushort)result.Count; } if (typeDef == owner) // TODO: CCI had if (typeDef == owner && index == 0) { result.AddRange(typeDef.GenericParameters); } else { foreach (Cci.IGenericTypeParameter genericParameter in typeDef.GenericParameters) { result.Add(new Cci.InheritedTypeParameter(index++, owner, genericParameter)); } } } return result; }
// TODO: unify with CCI? private IEnumerable<Cci.IGenericTypeParameter> GetConsolidatedTypeParameters(Cci.INamedTypeDefinition typeDef) { Cci.INestedTypeDefinition nestedTypeDef = typeDef.AsNestedTypeDefinition(_context); if (nestedTypeDef == null) { if (typeDef.IsGeneric) { return typeDef.GenericParameters; } return null; } return GetConsolidatedTypeParameters(typeDef, typeDef); }