* tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs: Sort the
authorAndrés G. Aragoneses <knocte@gmail.com>
Wed, 16 Sep 2009 17:59:13 +0000 (17:59 -0000)
committerAndrés G. Aragoneses <knocte@gmail.com>
Wed, 16 Sep 2009 17:59:13 +0000 (17:59 -0000)
descriptors wrt type name, to avoid false negatives at MoonAtkBridge
build time.

svn path=/trunk/mcs/; revision=142066

mcs/tools/tuner/ChangeLog
mcs/tools/tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs

index 356e7a7c98fe624abb1f8f6526d8a1940eca7070..d1fa1f315372e441579e4da48afa401a077df1e9 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-16  Andrés G. Aragoneses  <aaragoneses@novell.com>
+
+       * Mono.Tuner/MoonlightA11yDescriptorGenerator.cs: Sort the
+         descriptors wrt type name, to avoid false negatives at
+         MoonAtkBridge build time.
+
 2009-09-16  Andrés G. Aragoneses  <aaragoneses@novell.com>
 
        * Mono.Tuner/MoonlightA11yDescriptorGenerator.cs: Speed up by
index 32efdec10c60c7aad6ed8792b5ab82c157e6fe04..01118798c988e4c20ff3076cb73ecdcb7b7a5f7a 100644 (file)
@@ -70,13 +70,13 @@ namespace Mono.Tuner {
                                writer.WriteStartElement("linker");
                        }
 
-                       IDictionary types = ScanAssembly (assembly);
+                       SortedDictionary <TypeDefinition, IList> types = ScanAssembly (assembly);
                        if (types != null && types.Count > 0) {
                                writer.WriteStartElement("assembly");
                                writer.WriteAttributeString ("fullname", assembly.Name.Name);
                                
                                foreach (TypeDefinition type in types.Keys) {
-                                       IList members = (IList)types [type];
+                                       IList members = types [type];
                                        if (members != null && members.Count > 0) {
                                                writer.WriteStartElement("type");
                                                writer.WriteAttributeString ("fullname", type.FullName);
@@ -139,12 +139,12 @@ namespace Mono.Tuner {
                        return @params;
                }
 
-               Hashtable /*Dictionary<TypeDefinition,List<IAnnotationProvider>*/ ScanAssembly (AssemblyDefinition assembly)
+               SortedDictionary<TypeDefinition, IList> /*,List<IAnnotationProvider>>*/ ScanAssembly (AssemblyDefinition assembly)
                {
                        if (Annotations.GetAction (assembly) != AssemblyAction.Link)
                                return null;
 
-                       Hashtable members_used = new Hashtable ();
+                       SortedDictionary<TypeDefinition, IList> members_used = new SortedDictionary<TypeDefinition, IList> (new TypeComparer ());
                        foreach (TypeDefinition type in assembly.MainModule.Types) {
                                IList used_providers = FilterPublicMembers (ScanType (type));
                                if (used_providers.Count > 0)
@@ -324,5 +324,14 @@ namespace Mono.Tuner {
                        return used;
                }
 
+               class TypeComparer : IComparer <TypeDefinition> {
+
+                       public int Compare (TypeDefinition x, TypeDefinition y)
+                       {
+                               return string.Compare (x.ToString (), y.ToString ());
+                       }
+
+               }
+
        }
 }