private TypeData ReadTypeDataBase(AssemblyData assemblyData) { var typeId = _reader.ReadUInt32(); var name = _reader.ReadString(); var accessibility = (Accessibility)_reader.ReadByte(); var memberFlags = (MemberFlags)_reader.ReadByte(); var typeKind = (TypeKind)_reader.ReadByte(); var delegateReturnTypeIsDynamic = _reader.ReadBoolean(); TypeData type; var isTypeData = _reader.ReadBoolean(); if (isTypeData) { var typeFlags = (TypeDefinitionFlags)_reader.ReadByte(); var hasFullName = _reader.ReadBoolean(); var fullName = hasFullName ? _reader.ReadString() : null; type = new TypeDefinitionData(name, accessibility, memberFlags, typeKind, assemblyData, fullName, typeFlags, delegateReturnTypeIsDynamic); } else { var genericParameterAttributes = (GenericParameterAttributes)_reader.ReadInt32(); var genericParameterPosition = (int)_reader.ReadUInt16(); type = new GenericTypeParameterData(name, accessibility, memberFlags, typeKind, assemblyData, genericParameterAttributes, genericParameterPosition); } _typeTable.Add(typeId, type); return(type); }
private static void TestAssignability(Type a, Type b) { var aData = a.IsGenericParameter ? GenericTypeParameterData.FromType(a) : TypeData.FromType(a); var bData = b.IsGenericParameter ? GenericTypeParameterData.FromType(b) : TypeData.FromType(b); if (aData == null || bData == null) { Assert.Inconclusive("Unable to get one of the types"); } if (a.IsImplicitlyAssignableFrom(b)) { Assert.IsTrue(aData.IsAssignableFromNew(bData), string.Format("The type should be assignable: {0} <- {1}", aData.Name, bData.Name)); } else { Assert.IsFalse(aData.IsAssignableFromNew(bData), string.Format("The type should not be assignable: {0} <- {1}", aData.Name, bData.Name)); } if (b.IsImplicitlyAssignableFrom(a)) { Assert.IsTrue(bData.IsAssignableFromNew(aData), string.Format("The type should be assignable: {0} <- {1}", bData.Name, aData.Name)); } else { Assert.IsFalse(bData.IsAssignableFromNew(aData), string.Format("The type should not be assignable: {0} <- {1}", bData.Name, aData.Name)); } }
public static GenericTypeParameterCollection GetGenericParameters(IEnumerable <GenericParameter> genericArguments, MemberDataBase declaringMember) { return(new GenericTypeParameterCollection(genericArguments.Select(a => { var genericParameter = GenericTypeParameterData.FromType(a); if (declaringMember != null) { Debug.Assert(genericParameter.GenericDeclaringMember == null, "The GenericDeclaringMember should not be set twice."); genericParameter.GenericDeclaringMember = declaringMember; } return genericParameter; }))); }
/// <summary> /// The visit implementation for <see cref="GenericTypeParameterData"/> instances. /// </summary> public virtual void VisitGenericTypeParameterData(GenericTypeParameterData item) => DefaultVisit(item);
private static List <BreakingChangeBase> CompareGenericTypeParameters(GenericTypeParameterData oldGenericTypeParameter, GenericTypeParameterData newGenericTypeParameter, AssemblyFamily newAssemblyFamily) => CompareItems(oldGenericTypeParameter, newGenericTypeParameter, newAssemblyFamily);
internal ChangedGenericTypeParameterVariance(GenericTypeParameterData oldGenericParameter, GenericTypeParameterData newGenericParameter) : base(oldGenericParameter, newGenericParameter, null, BreakingChangeKind.ChangedGenericTypeParameterVariance) { OldGenericParameter = oldGenericParameter; NewGenericParameter = newGenericParameter; }
internal ChangedGenericTypeParameterConstraints(GenericTypeParameterData oldGenericParameter, GenericTypeParameterData newGenericParameter) : base(oldGenericParameter, newGenericParameter, null, BreakingChangeKind.ChangedGenericTypeParameterConstraints) { OldGenericParameter = oldGenericParameter; NewGenericParameter = newGenericParameter; }