[mono-api-html] Take arity into account when comparing methods.
[mono.git] / mcs / tools / corcompare / mono-api-html / MethodComparer.cs
index fb28c40cccde18bcf5272ad2c408119f19bb1c40..1dffa17dfcc512b7549127dff18e9ec6fd498a80 100644 (file)
@@ -25,6 +25,7 @@
 //
 
 using System;
+using System.Linq;
 using System.Xml.Linq;
 
 namespace Xamarin.ApiDiff {
@@ -42,8 +43,24 @@ namespace Xamarin.ApiDiff {
                // operators have identical names but vary by return types
                public override bool Find (XElement e)
                {
-                       return (e.GetAttribute ("name") == Source.GetAttribute ("name")) &&
-                               (e.GetAttribute ("returntype") == Source.GetAttribute ("returntype"));
+                       if (e.GetAttribute ("name") != Source.GetAttribute ("name"))
+                               return false;
+
+                       if (e.GetAttribute ("returntype") != Source.GetAttribute ("returntype"))
+                               return false;
+
+                       var eGP = e.Element ("generic-parameters");
+                       var sGP = Source.Element ("generic-parameters");
+
+                       if (eGP == null && sGP == null)
+                               return true;
+                       else if (eGP == null ^ sGP == null)
+                               return false;
+                       else {
+                               var eGPs = eGP.Elements ("generic-parameter");
+                               var sGPs = sGP.Elements ("generic-parameter");
+                               return eGPs.Count () == sGPs.Count ();
+                       }
                }
        }
 }
\ No newline at end of file