merging the Mainsoft branch to the trunk
[mono.git] / mcs / tools / corcompare / MissingField.cs
index 6c6aaa0e7468fb576a54e54d78f4e1ecc2ea3523..12e598a2180aeda8297fdf978e721cf36254c7d9 100644 (file)
@@ -42,6 +42,33 @@ namespace Mono.Util.CorCompare {
                                AddFlagWarning (fiMono.IsStatic, fiMS.IsStatic, "static");
                                AddFlagWarning (fiMono.IsLiteral, fiMS.IsLiteral, "const");
                                AddFlagWarning (fiMono.IsInitOnly, fiMS.IsInitOnly, "readonly");
+
+                               string strTypeMono = fiMono.FieldType.FullName;
+                               string strTypeMS   =   fiMS.FieldType.FullName;
+                               if (strTypeMono != strTypeMS)
+                               {
+                                       Status.AddWarning ("Invalid type: is '"+strTypeMono+"', should be '"+strTypeMS+"'");
+                               }
+
+                               try
+                               {
+                                       if (fiMono.IsStatic && fiMS.IsStatic &&
+                                               fiMono.IsLiteral && fiMS.IsLiteral)
+                                       {
+                                               object objMono = fiMono.GetValue (null);
+                                               object objMS = fiMS.GetValue (null);
+                                               long lMono = Convert.ToInt64 (objMono);
+                                               long lMS = Convert.ToInt64 (objMS);
+
+                                               if (lMono != lMS)
+                                               {
+                                                       string strValMono = ((lMono < 0) ? "-0x" : "0x") + lMono.ToString ("x");
+                                                       string strValMS   = ((lMS   < 0) ? "-0x" : "0x") +   lMS.ToString ("x");
+                                                       Status.AddWarning ("Invalid value: is '"+strValMono+"', should be '"+strValMS+"'");
+                                               }
+                                       }
+                               }
+                               catch (Exception) {}
                        }
                        return m_nodeStatus;
                }