merging the Mainsoft branch to the trunk
[mono.git] / mcs / tools / corcompare / MissingMethod.cs
index bc550e93dfd324f58f8add4e8dcbc128141f64a9..306bbb66e8158c588f9a315b9d577463ea7570d3 100644 (file)
@@ -1,50 +1,58 @@
-// Mono.Util.CorCompare.MissingMethod\r
-//\r
-// Author(s):\r
-//   Nick Drochak (ndrochak@gol.com)\r
-//\r
-// (C) 2001-2002 Nick Drochak\r
-\r
-using System;\r
-using System.Reflection;\r
-using System.Text;\r
-\r
-namespace Mono.Util.CorCompare {\r
-\r
-       /// <summary>\r
-       ///     Represents a class method that is completely missing\r
-       /// </summary>\r
-       /// <remarks>\r
-       ///     created by - Nick\r
-       ///     created on - 2/20/2002 10:43:57 PM\r
-       /// </remarks>\r
-       class MissingMethod : IMissingMember \r
-       {\r
-               // e.g. <method name="Equals" status="missing"/>\r
-               MemberInfo mInfo;\r
-\r
-               public MissingMethod(MemberInfo info) {\r
-                       mInfo = info;\r
-               }\r
-\r
-               public string Name {\r
-                       get {\r
-                               string s = mInfo.ToString();\r
-                               int index = s.IndexOf(' ');\r
-                               return s.Substring(index + 1);\r
-                       }\r
-               }\r
-\r
-               public virtual string Status {\r
-                       get {\r
-                               return "missing";\r
-                       }\r
-               }\r
-\r
-               public string Type {\r
-                       get {\r
-                               return "method";\r
-                       }\r
-               }\r
-       }\r
-}\r
+// Mono.Util.CorCompare.MissingMethod
+//
+// Author(s):
+//   Nick Drochak (ndrochak@gol.com)
+//
+// (C) 2001-2002 Nick Drochak
+
+using System;
+using System.Reflection;
+using System.Text;
+
+namespace Mono.Util.CorCompare {
+
+       /// <summary>
+       ///     Represents a class method that is completely missing
+       /// </summary>
+       /// <remarks>
+       ///     created by - Nick
+       ///     created on - 2/20/2002 10:43:57 PM
+       /// </remarks>
+       class MissingMethod : MissingMember 
+       {
+               // e.g. <method name="Equals" status="missing"/>
+               public MissingMethod (MemberInfo infoMono, MemberInfo infoMS) : base (infoMono, infoMS) {}
+
+               public override string Name {
+                       get {
+                               string s = Info.ToString();
+                               int index = s.IndexOf(' ');
+                               return s.Substring(index + 1);
+                       }
+               }
+
+               public override string Type {
+                       get {
+                               return "method";
+                       }
+               }
+
+               public override NodeStatus Analyze ()
+               {
+                       m_nodeStatus = base.Analyze ();
+
+                       if (mInfoMono != null && mInfoMS != null)
+                       {
+                               MethodBase miMono = (MethodBase) mInfoMono;
+                               MethodBase miMS   = (MethodBase) mInfoMS;
+
+                               AddFlagWarning (miMono.IsAbstract, miMS.IsAbstract, "abstract");
+                               AddFlagWarning (miMono.IsStatic, miMS.IsStatic, "static");
+                               AddFlagWarning (miMono.IsVirtual && !miMono.IsFinal, miMS.IsVirtual && !miMS.IsFinal, "virtual");
+                               AddFlagWarning (miMono.IsConstructor, miMS.IsConstructor, "a constructor");
+                               //AddFlagWarning (miMono.IsFinal, miMS.IsFinal, "sealed");
+                       }
+                       return m_nodeStatus;
+               }
+       }
+}