From e26b9d80c44977e10cd96be762293ad7c3ed6a78 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Wed, 14 Sep 2016 19:27:06 -0400 Subject: [PATCH] Bump to Mono.Cecil 0.10.0-beta1-v2 Mono 4.8 has migrated to Mono.Cecil/master, based on 0.10.0, which is API-incompatible with the previous Mono.Cecil 0.9.6. In particular, `TypeDefinition.Interfaces` now returns a `Collection` instead of the previous `Collection`, which causes all manner of breakage. Since the next version of Xamarin.Android will be based on Mono 4.8, and Xamarin.Android needs Java.Interop, bump Java.Interop to use the Mono.Cecil 0.10.x preview package, and fix the corresponding breakage. --- .../Java.Interop.Tools.Cecil.csproj | 10 +++++----- .../DirectoryAssemblyResolver.cs | 10 ++++++++++ .../Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs | 6 ++++-- src/Java.Interop.Tools.Cecil/packages.config | 2 +- .../Java.Interop.Tools.Diagnostics.csproj | 8 ++++---- src/Java.Interop.Tools.Diagnostics/packages.config | 2 +- .../Java.Interop.Tools.JavaCallableWrappers.csproj | 10 +++++----- .../JavaCallableWrapperGenerator.cs | 7 ++++--- ...ava.Interop.Tools.JavaCallableWrappers-Tests.csproj | 10 +++++----- .../Test/packages.config | 2 +- .../packages.config | 2 +- ...amarin.Android.Tools.AnnotationSupport.Cecil.csproj | 2 +- .../packages.config | 2 +- tools/generator/ClassGen.cs | 9 +++++---- tools/generator/InterfaceGen.cs | 5 +++-- tools/generator/generator.csproj | 8 ++++---- tools/generator/packages.config | 2 +- tools/jcw-gen/jcw-gen.csproj | 8 ++++---- tools/jcw-gen/packages.config | 2 +- 19 files changed, 61 insertions(+), 46 deletions(-) diff --git a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj index 424be07cc..dc043c15d 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj @@ -31,16 +31,16 @@ - $(MSBuildThisFileDirectory)\..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + $(MSBuildThisFileDirectory)\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - $(MSBuildThisFileDirectory)\..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + $(MSBuildThisFileDirectory)\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + $(MSBuildThisFileDirectory)\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + $(MSBuildThisFileDirectory)\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll @@ -60,4 +60,4 @@ - + diff --git a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs index 29c574105..7068c4112 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs @@ -74,6 +74,16 @@ public DirectoryAssemblyResolver (Action logWarnings, bool loa SearchDirectories = new List (); } + public void Dispose () + { + Dispose (disposing: false); + GC.SuppressFinalize (this); + } + + protected virtual void Dispose (bool disposing) + { + } + public IDictionary ToResolverCache () { var resolver_cache = new Hashtable (); diff --git a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs index 54ef64090..da8f39470 100644 --- a/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs +++ b/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs @@ -41,9 +41,11 @@ public static bool IsAssignableFrom (this TypeReference type, TypeReference c) return true; if (!t.HasInterfaces) continue; - foreach (var i in t.Interfaces) + foreach (var ifaceImpl in t.Interfaces) { + var i = ifaceImpl.InterfaceType; if (IsAssignableFrom (type, i)) return true; + } } return false; } @@ -56,7 +58,7 @@ public static bool IsSubclassOf (this TypeDefinition type, string typeName) public static bool ImplementsInterface (this TypeDefinition type, string interfaceName) { return type.GetTypeAndBaseTypes ().Any (t => t.HasInterfaces && - t.Interfaces.Any (i => i.FullName == interfaceName)); + t.Interfaces.Any (i => i.InterfaceType.FullName == interfaceName)); } public static string GetPartialAssemblyQualifiedName (this TypeReference type) diff --git a/src/Java.Interop.Tools.Cecil/packages.config b/src/Java.Interop.Tools.Cecil/packages.config index e304cab94..463589934 100644 --- a/src/Java.Interop.Tools.Cecil/packages.config +++ b/src/Java.Interop.Tools.Cecil/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj index c2384e083..9f45e490c 100644 --- a/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj +++ b/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj @@ -31,16 +31,16 @@ - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll diff --git a/src/Java.Interop.Tools.Diagnostics/packages.config b/src/Java.Interop.Tools.Diagnostics/packages.config index e304cab94..463589934 100644 --- a/src/Java.Interop.Tools.Diagnostics/packages.config +++ b/src/Java.Interop.Tools.Diagnostics/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj index d8a5fd238..78fee22f8 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj @@ -32,16 +32,16 @@ - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll @@ -74,4 +74,4 @@ - + diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/JavaCallableWrapperGenerator.cs b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/JavaCallableWrapperGenerator.cs index 038c4c030..ebccbfd94 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/JavaCallableWrapperGenerator.cs +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/JavaCallableWrapperGenerator.cs @@ -198,8 +198,9 @@ static SequencePoint LookupSource (MethodDefinition method) return null; foreach (var ins in method.Body.Instructions) { - if (ins.SequencePoint != null) - return ins.SequencePoint; + var seqPoint = method.DebugInformation.GetSequencePoint (ins); + if (seqPoint != null) + return seqPoint; } return null; @@ -213,7 +214,7 @@ static SequencePoint LookupSource (TypeDefinition type) continue; foreach (var ins in method.Body.Instructions) { - var seq = ins.SequencePoint; + var seq = method.DebugInformation.GetSequencePoint (ins); if (seq == null) continue; diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj b/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj index 7e7dde270..3123b3634 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Test/Java.Interop.Tools.JavaCallableWrappers-Tests.csproj @@ -35,16 +35,16 @@ ..\..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll - ..\..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + ..\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + ..\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + ..\..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll @@ -75,4 +75,4 @@ - + diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/Test/packages.config b/src/Java.Interop.Tools.JavaCallableWrappers/Test/packages.config index deedee59d..2328985dc 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/Test/packages.config +++ b/src/Java.Interop.Tools.JavaCallableWrappers/Test/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/src/Java.Interop.Tools.JavaCallableWrappers/packages.config b/src/Java.Interop.Tools.JavaCallableWrappers/packages.config index e304cab94..463589934 100644 --- a/src/Java.Interop.Tools.JavaCallableWrappers/packages.config +++ b/src/Java.Interop.Tools.JavaCallableWrappers/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj index 426f050d7..fc2556606 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj +++ b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj @@ -32,7 +32,7 @@ - ..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll diff --git a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/packages.config b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/packages.config index e304cab94..463589934 100644 --- a/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/packages.config +++ b/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/tools/generator/ClassGen.cs b/tools/generator/ClassGen.cs index 524feca17..d71f58949 100644 --- a/tools/generator/ClassGen.cs +++ b/tools/generator/ClassGen.cs @@ -31,13 +31,14 @@ public ManagedClassGen (TypeDefinition t) : base (new ManagedGenBaseSupport (t)) { this.t = t; - foreach (var itd in t.Interfaces) { - var def = itd.Resolve (); + foreach (var ifaceImpl in t.Interfaces) { + var iface = ifaceImpl.InterfaceType; + var def = ifaceImpl.InterfaceType.Resolve (); if (def != null && def.IsNotPublic) continue; - AddInterface (itd.FullNameCorrected ()); + AddInterface (iface.FullNameCorrected ()); } - bool implements_charsequence = t.Interfaces.Any (it => it.FullName == "Java.Lang.CharSequence"); + bool implements_charsequence = t.Interfaces.Any (it => it.InterfaceType.FullName == "Java.Lang.CharSequence"); foreach (var m in t.Methods) { if (m.IsPrivate || m.IsAssembly || !m.CustomAttributes.Any (ca => ca.AttributeType.FullNameCorrected () == "Android.Runtime.RegisterAttribute")) continue; diff --git a/tools/generator/InterfaceGen.cs b/tools/generator/InterfaceGen.cs index a25b5b580..e3b48af1c 100644 --- a/tools/generator/InterfaceGen.cs +++ b/tools/generator/InterfaceGen.cs @@ -15,8 +15,9 @@ public class ManagedInterfaceGen : InterfaceGen { public ManagedInterfaceGen (TypeDefinition t) : base (new ManagedGenBaseSupport (t)) { - foreach (var itd in t.Interfaces) - AddInterface (itd.FullNameCorrected ()); + foreach (var ifaceImpl in t.Interfaces) { + AddInterface (ifaceImpl.InterfaceType.FullNameCorrected ()); + } foreach (var m in t.Methods) { if (m.IsPrivate || m.IsAssembly || !m.CustomAttributes.Any (ca => ca.AttributeType.FullNameCorrected () == "Android.Runtime.RegisterAttribute")) continue; diff --git a/tools/generator/generator.csproj b/tools/generator/generator.csproj index 21c8c2629..2834e054c 100644 --- a/tools/generator/generator.csproj +++ b/tools/generator/generator.csproj @@ -43,16 +43,16 @@ - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll ..\..\packages\Mono.Options.4.4.0.0\lib\net4-client\Mono.Options.dll diff --git a/tools/generator/packages.config b/tools/generator/packages.config index ace0e7b06..bfb63452b 100644 --- a/tools/generator/packages.config +++ b/tools/generator/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/tools/jcw-gen/jcw-gen.csproj b/tools/jcw-gen/jcw-gen.csproj index 4589883a5..f904228d4 100644 --- a/tools/jcw-gen/jcw-gen.csproj +++ b/tools/jcw-gen/jcw-gen.csproj @@ -31,16 +31,16 @@ - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll ..\..\packages\Mono.Options.4.4.0.0\lib\net4-client\Mono.Options.dll diff --git a/tools/jcw-gen/packages.config b/tools/jcw-gen/packages.config index ace0e7b06..bfb63452b 100644 --- a/tools/jcw-gen/packages.config +++ b/tools/jcw-gen/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file