Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 3
0
        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;
            })));
        }
Exemplo n.º 4
0
 /// <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);
Exemplo n.º 6
0
 internal ChangedGenericTypeParameterVariance(GenericTypeParameterData oldGenericParameter, GenericTypeParameterData newGenericParameter)
     : base(oldGenericParameter, newGenericParameter, null, BreakingChangeKind.ChangedGenericTypeParameterVariance)
 {
     OldGenericParameter = oldGenericParameter;
     NewGenericParameter = newGenericParameter;
 }
Exemplo n.º 7
0
 internal ChangedGenericTypeParameterConstraints(GenericTypeParameterData oldGenericParameter, GenericTypeParameterData newGenericParameter)
     : base(oldGenericParameter, newGenericParameter, null, BreakingChangeKind.ChangedGenericTypeParameterConstraints)
 {
     OldGenericParameter = oldGenericParameter;
     NewGenericParameter = newGenericParameter;
 }