[mono-api-html] Make --ignore-changes-virtual less lenient.
[mono.git] / mcs / tools / corcompare / mono-api-html / MemberComparer.cs
index 0a646c7a2a26f392cacef89ef548c252f4aa28c1..cc2e944fc010092d4de29b75e4bf84ae9644e3ef 100644 (file)
@@ -177,7 +177,18 @@ namespace Xamarin.ApiDiff {
                        if (base.Equals (source, target))
                                return true;
 
-                       return GetDescription (source) == GetDescription (target);
+                       string sourceDescription = GetDescription (source);
+                       string targetDescription = GetDescription (target);
+
+                       return (sourceDescription == targetDescription) ||
+                               // *adding* virtual or override to target is acceptable; *removing* them is NOT
+                               (State.IgnoreVirtualChanges &&
+                                       // non-virtual to virtual is fine
+                                       (sourceDescription == targetDescription.Replace ("virtual ", "")) ||
+                                       // non-virtual to override is fine
+                                       (sourceDescription == targetDescription.Replace ("override ", "")) ||
+                                       // virtual to override is fine
+                                       (sourceDescription.Replace (" virtual ", " override ") == targetDescription));
                }
 
                bool IsNowObsoleted (XElement source, XElement target)