From 30c02efa297d5eb6bbf89717d90119de27a2ea6c Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 19 Nov 2015 10:00:20 +0100 Subject: [PATCH] [mono-api-info] Take into account parameters when sorting properties. --- mcs/tools/corcompare/mono-api-info.cs | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/mcs/tools/corcompare/mono-api-info.cs b/mcs/tools/corcompare/mono-api-info.cs index 5a21d52f113..42f28d979c2 100644 --- a/mcs/tools/corcompare/mono-api-info.cs +++ b/mcs/tools/corcompare/mono-api-info.cs @@ -483,7 +483,7 @@ namespace CorCompare PropertyDefinition[] properties = GetProperties (type); if (properties.Length > 0) { - Array.Sort (properties, MemberReferenceComparer.Default); + Array.Sort (properties, PropertyDefinitionComparer.Default); members.Add (new PropertyData (document, nclass, properties)); } @@ -1395,6 +1395,29 @@ namespace CorCompare } } + class PropertyDefinitionComparer : IComparer + { + public static PropertyDefinitionComparer Default = new PropertyDefinitionComparer (); + + public int Compare (PropertyDefinition ma, PropertyDefinition mb) + { + int res = String.Compare (ma.Name, mb.Name); + if (res != 0) + return res; + + if (!ma.HasParameters && !mb.HasParameters) + return 0; + + if (!ma.HasParameters) + return -1; + + if (!mb.HasParameters) + return 1; + + return MethodDefinitionComparer.Compare (ma.Parameters, mb.Parameters); + } + } + class MethodDefinitionComparer : IComparer { public static MethodDefinitionComparer Default = new MethodDefinitionComparer (); @@ -1416,9 +1439,12 @@ namespace CorCompare if (!mb.HasParameters) return 1; - IList pia = ma.Parameters ; - IList pib = mb.Parameters; - res = pia.Count - pib.Count; + return Compare (ma.Parameters, mb.Parameters); + } + + public static int Compare (IList pia, IList pib) + { + var res = pia.Count - pib.Count; if (res != 0) return res; -- 2.11.4.GIT