public override bool Equals(Signature other) { if (!base.Equals(other)) { return(false); } var otherMeth = (MethodSignature)other; if (IsStatic != otherMeth.IsStatic || TypeArity != otherMeth.TypeArity || Parameters.Count != otherMeth.Parameters.Count) { return(false); } for (var i = 0; i < Parameters.Count; i++) { if (!Parameters[i].Equals(otherMeth.Parameters[i])) { return(false); } } if (Result == null && otherMeth.Result != null || Result != null && otherMeth.Result == null) { return(false); } return(Result == null || Result.Equals(otherMeth.Result)); }
public override bool Equals(Signature other) { if (!base.Equals(other)) { return(false); } var otherField = (FieldSignature)other; return(FieldType.Equals(otherField.FieldType)); }
public override bool Equals(Signature other) { if (!base.Equals(other)) { return(false); } var otherProp = (PropertySignature)other; if (IsStatic != otherProp.IsStatic || Parameters.Count != otherProp.Parameters.Count) { return(false); } for (var i = 0; i < Parameters.Count; i++) { if (!Parameters[i].Equals(otherProp.Parameters[i])) { return(false); } } return(Result.Equals(otherProp.Result)); }
public virtual bool Equals(MemberRef other) { return(Flavor == other.Flavor && DefiningType.Equals(other.DefiningType) && Name.Equals(other.Name, StringComparison.Ordinal) && Signature.Equals(other.Signature)); }
public override bool Equals(object obj) { var test = obj as Test; return(test != null && Op == test.Op && IsUnsigned == test.IsUnsigned && Type.Equals(test.Type)); }
private PE.TypeSig TypeSigFromTypeRef(DllSaveContext ctxt, TypeRef typeRef) { if (typeRef.Equals(rootEnv.Global.TypedReferenceRef)) { return new PE.PrimitiveTypeSig { PrimitiveType = PE.PrimitiveType.TypedRef } } ; else { var tyconEnv = typeRef.EnterConstructor(rootEnv); switch (tyconEnv.Type.Flavor) { case TypeDefFlavor.Pointer: { var p = (PointerTypeDef)tyconEnv.Type; switch (p.PointerFlavor) { case PointerFlavor.Unmanaged: return(new PE.UnmanagedPointerTypeSig { ElementType = TypeWithCustomModsFromTypeRef(ctxt, typeRef.Arguments[0]) }); case PointerFlavor.Managed: return(new PE.ManagedPointerTypeSig { ElementType = TypeSigFromTypeRef(ctxt, typeRef.Arguments[0]) }); default: throw new ArgumentOutOfRangeException(); } } case TypeDefFlavor.CodePointer: { var p = (CodePointerTypeDef)tyconEnv.Type; switch (p.CodePointerFlavor) { case CodePointerFlavor.Function: throw new NotImplementedException(); case CodePointerFlavor.Action: throw new NotImplementedException(); default: throw new ArgumentOutOfRangeException(); } break; } case TypeDefFlavor.Array: return(new PE.ArrayTypeSig { ElementType = TypeWithCustomModsFromTypeRef(ctxt, typeRef.Arguments[0]) }); case TypeDefFlavor.MultiDimArray: { var a = (MultiDimArrayTypeDef)tyconEnv.Type; return(new PE.MultiDimArrayTypeSig { ElementType = TypeSigFromTypeRef(ctxt, typeRef.Arguments[0]), Rank = a.Rank, LoBounds = a.Bounds.LoBounds(), Sizes = a.Bounds.Sizes() }); } case TypeDefFlavor.Box: throw new InvalidOperationException("unexpected box type"); case TypeDefFlavor.Null: throw new InvalidOperationException("unexpected null type"); case TypeDefFlavor.Parameter: { var p = (ParameterTypeDef)tyconEnv.Type; switch (p.ParameterFlavor) { case ParameterFlavor.Type: return(new PE.TypeParameterTypeSig { Index = p.Index }); case ParameterFlavor.Method: return(new PE.MethodParameterTypeSig { Index = p.Index }); default: throw new ArgumentOutOfRangeException(); } } case TypeDefFlavor.Handle: case TypeDefFlavor.Nullable: case TypeDefFlavor.Enum: case TypeDefFlavor.Struct: { var applicand = new PE.TypeDefOrRefSig { IsValueType = true, TypeDefOrRef = { Value = TypeDefOrRefRowFromQualifiedTypeName(ctxt, typeRef.QualifiedTypeName) } }; if (typeRef.Arguments.Count > 0) { return new PE.ApplicationTypeSig { Applicand = applicand, Arguments = typeRef.Arguments.Select(t => TypeSigFromTypeRef(ctxt, t)).ToSeq() } } ; else { return(applicand); } } case TypeDefFlavor.Void: return(new PE.PrimitiveTypeSig { PrimitiveType = PE.PrimitiveType.Void }); case TypeDefFlavor.Number: { var n = (NumberTypeDef)tyconEnv.Type; var p = default(PE.PrimitiveType); switch (n.NumberFlavor) { case NumberFlavor.Int8: p = PE.PrimitiveType.Int8; break; case NumberFlavor.Int16: p = PE.PrimitiveType.Int16; break; case NumberFlavor.Int32: p = PE.PrimitiveType.Int32; break; case NumberFlavor.Int64: p = PE.PrimitiveType.Int64; break; case NumberFlavor.IntNative: p = PE.PrimitiveType.IntNative; break; case NumberFlavor.UInt8: p = PE.PrimitiveType.UInt8; break; case NumberFlavor.UInt16: p = PE.PrimitiveType.UInt16; break; case NumberFlavor.UInt32: p = PE.PrimitiveType.UInt32; break; case NumberFlavor.UInt64: p = PE.PrimitiveType.UInt64; break; case NumberFlavor.UIntNative: p = PE.PrimitiveType.UIntNative; break; case NumberFlavor.Single: p = PE.PrimitiveType.Single; break; case NumberFlavor.Double: p = PE.PrimitiveType.Double; break; case NumberFlavor.Boolean: p = PE.PrimitiveType.Boolean; break; case NumberFlavor.Char: p = PE.PrimitiveType.Char; break; default: throw new ArgumentOutOfRangeException(); } return(new PE.PrimitiveTypeSig { PrimitiveType = p }); } case TypeDefFlavor.Delegate: case TypeDefFlavor.Class: case TypeDefFlavor.Interface: case TypeDefFlavor.GenericIEnumerable: { var applicand = new PE.TypeDefOrRefSig { IsValueType = false, TypeDefOrRef = { Value = TypeDefOrRefRowFromQualifiedTypeName(ctxt, typeRef.QualifiedTypeName) } }; if (typeRef.Arguments.Count > 0) { return new PE.ApplicationTypeSig { Applicand = applicand, Arguments = typeRef.Arguments.Select(t => TypeSigFromTypeRef(ctxt, t)).ToSeq() } } ; else { return(applicand); } } case TypeDefFlavor.Object: return(new PE.PrimitiveTypeSig { PrimitiveType = PE.PrimitiveType.Object }); case TypeDefFlavor.String: return(new PE.PrimitiveTypeSig { PrimitiveType = PE.PrimitiveType.String }); default: throw new ArgumentOutOfRangeException(); } } }
public bool Equals(Variable other) { return(Id.Equals(other.Id) && ArgLocal == other.ArgLocal && IsInit == other.IsInit && IsReadOnly == other.IsReadOnly && Type.Equals(other.Type)); }
protected override bool EqualBody(Cell other) { var box = (BoxCell)other; return(Box.Equals(box.Box) && ValueType.Equals(box.ValueType)); }