Merge pull request #4453 from lambdageek/bug-49721
[mono.git] / mcs / tools / corcompare / mono-api-info.cs
index c52c95f46cf42bc74740f9202061caba4e806504..0db2fed2633fa06bc8305983cc6b28624636edf0 100644 (file)
@@ -200,7 +200,7 @@ namespace CorCompare
                                if (File.Exists (assembly))
                                        return TypeHelper.Resolver.ResolveFile (assembly);
 
-                               return TypeHelper.Resolver.Resolve (assembly);
+                               return TypeHelper.Resolver.Resolve (AssemblyNameReference.Parse (assembly), new ReaderParameters ());
                        } catch (Exception e) {
                                Console.WriteLine (e);
                                return null;
@@ -1377,10 +1377,18 @@ namespace CorCompare
                                if (ca.Count != 1)
                                        break;
 
+                               if (mapping == null)
+                                       mapping = new Dictionary<string, object> (StringComparer.Ordinal);
+
                                if (constructor.Parameters[0].ParameterType == constructor.Module.TypeSystem.Boolean) {
-                                       if (mapping == null)
-                                               mapping = new Dictionary<string, object> (StringComparer.Ordinal);
                                        mapping.Add ("Bindable", ca[0].Value);
+                               } else if (constructor.Parameters[0].ParameterType.FullName == "System.ComponentModel.BindableSupport") {
+                                       if ((int)ca[0].Value == 0)
+                                               mapping.Add ("Bindable", false);
+                                       else if ((int)ca[0].Value == 1)
+                                               mapping.Add ("Bindable", true);
+                                       else
+                                               throw new NotImplementedException ();
                                } else {
                                        throw new NotImplementedException ();
                                }
@@ -1541,6 +1549,19 @@ namespace CorCompare
 
                                ParameterDefinition info = infos [i];
 
+                               string modifier = string.Empty;
+                               if (info.ParameterType.IsByReference) {
+                                       if ((info.Attributes & ParameterAttributes.In) != 0)
+                                               modifier = "in";
+                                       else if ((info.Attributes & ParameterAttributes.Out) != 0)
+                                               modifier = "out";
+                               }
+
+                               if (modifier.Length > 0) {
+                                       signature.Append (modifier);
+                                       signature.Append (" ");
+                               }
+
                                signature.Append (Utils.CleanupTypeName (info.ParameterType));
                        }