1 // Mono.Util.CorCompare.MissingField
4 // Nick Drochak (ndrochak@gol.com)
6 // (C) 2001-2002 Nick Drochak
9 using System.Reflection;
11 namespace Mono.Util.CorCompare {
14 /// Represents a class event that is completely missing
18 /// created on - 2/24/2002 10:43:57 PM
20 class MissingField : MissingMember {
21 // e.g. <method name="Equals" status="missing"/>
22 public MissingField (MemberInfo infoMono, MemberInfo infoMS) : base (infoMono, infoMS) {}
24 public override string Type {
30 public override NodeStatus Analyze ()
34 if (mInfoMono != null && mInfoMS != null)
36 FieldInfo fiMono = (FieldInfo) mInfoMono;
37 FieldInfo fiMS = (FieldInfo) mInfoMS;
39 AddFakeAttribute (fiMono.IsNotSerialized, fiMS.IsNotSerialized, "System.NonSerializedAttribute");
40 AddFakeAttribute (fiMono.IsPinvokeImpl, fiMS.IsPinvokeImpl, "System.PInvokeImplAttribute");
42 AddFlagWarning (fiMono.IsStatic, fiMS.IsStatic, "static");
43 AddFlagWarning (fiMono.IsLiteral, fiMS.IsLiteral, "const");
44 AddFlagWarning (fiMono.IsInitOnly, fiMS.IsInitOnly, "readonly");
46 string strTypeMono = fiMono.FieldType.FullName;
47 string strTypeMS = fiMS.FieldType.FullName;
48 if (strTypeMono != strTypeMS)
50 Status.AddWarning ("Invalid type: is '"+strTypeMono+"', should be '"+strTypeMS+"'");
55 if (fiMono.IsStatic && fiMS.IsStatic &&
56 fiMono.IsLiteral && fiMS.IsLiteral)
58 object objMono = fiMono.GetValue (null);
59 object objMS = fiMS.GetValue (null);
60 long lMono = Convert.ToInt64 (objMono);
61 long lMS = Convert.ToInt64 (objMS);
65 string strValMono = ((lMono < 0) ? "-0x" : "0x") + lMono.ToString ("x");
66 string strValMS = ((lMS < 0) ? "-0x" : "0x") + lMS.ToString ("x");
67 Status.AddWarning ("Invalid value: is '"+strValMono+"', should be '"+strValMS+"'");