From 512055f8a3adc86ebcf22aff4d51d8be228505bf Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Thu, 25 Jul 2019 10:47:55 -0500 Subject: [PATCH] [generator] All generated interfaces should inherit IJavaPeerable. --- .../CodeGenerator.cs | 4 +- .../JavaInteropCodeGenerator.cs | 1 + .../expected.ji/Android.Text.ISpanned.cs | 2 +- .../expected.ji/Android.Views.View.cs | 2 +- .../JavaInterop1/WriteInterface.txt | 2 +- .../WriteInterfaceDeclaration.txt | 39 +++++++++++++++++++ .../JavaInterop1/WriteInterfaceFields.txt | 2 +- .../JavaInterop1/WriteInterfaceMethod.txt | 11 ++++++ .../WriteInterfaceDeclaration.txt | 0 .../XamarinAndroid/WriteInterfaceMethod.txt | 11 ++++++ .../Tests/Unit-Tests/CodeGeneratorTests.cs | 2 +- .../Adapters/Xamarin.Test.IAdapter.cs | 2 +- ...ogle.Android.Exoplayer.Drm.IExoMediaDrm.cs | 4 +- .../Xamarin.Test.II1.cs | 2 +- .../Xamarin.Test.II2.cs | 2 +- .../Xamarin.Test.NotificationCompatBase.cs | 2 +- .../Test.ME.IGenericInterface.cs | 2 +- .../Test.ME.IGenericPropertyInterface.cs | 2 +- .../TestInterface/Test.ME.ITestInterface.cs | 2 +- .../java.lang.Enum/Java.Lang.IComparable.cs | 2 +- tools/generator/Tests/generator-Tests.csproj | 9 +++-- 21 files changed, 86 insertions(+), 19 deletions(-) create mode 100644 tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceDeclaration.txt create mode 100644 tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceMethod.txt rename tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/{Common => XamarinAndroid}/WriteInterfaceDeclaration.txt (100%) create mode 100644 tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/XamarinAndroid/WriteInterfaceMethod.txt diff --git a/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/CodeGenerator.cs b/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/CodeGenerator.cs index bc5a85922..78a109c50 100644 --- a/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/CodeGenerator.cs +++ b/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/CodeGenerator.cs @@ -22,6 +22,8 @@ protected CodeGenerator (TextWriter writer, CodeGenerationOptions options) opt = options; } + internal virtual string GetAllInterfaceImplements () => "IJavaObject"; + internal abstract void WriteClassHandle (ClassGen type, string indent, bool requireNew); internal abstract void WriteClassHandle (InterfaceGen type, string indent, string declaringType); @@ -522,7 +524,7 @@ public void WriteInterfaceDeclaration (InterfaceGen @interface, string indent) if (@interface.TypeParameters != null && @interface.TypeParameters.Any ()) writer.WriteLine ("{0}{1}", indent, @interface.TypeParameters.ToGeneratedAttributeString ()); writer.WriteLine ("{0}{1} partial interface {2}{3} {{", indent, @interface.Visibility, @interface.Name, - @interface.IsConstSugar ? string.Empty : @interface.Interfaces.Count == 0 || sb.Length == 0 ? " : IJavaObject" : " : " + sb.ToString ()); + @interface.IsConstSugar ? string.Empty : @interface.Interfaces.Count == 0 || sb.Length == 0 ? " : " + GetAllInterfaceImplements () : " : " + sb.ToString ()); WriteInterfaceFields (@interface, indent + "\t"); writer.WriteLine (); WriteInterfaceProperties (@interface, indent + "\t"); diff --git a/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/JavaInteropCodeGenerator.cs b/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/JavaInteropCodeGenerator.cs index c04a58e76..065cc433a 100644 --- a/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/JavaInteropCodeGenerator.cs +++ b/tools/generator/Java.Interop.Tools.Generator.CodeGeneration/JavaInteropCodeGenerator.cs @@ -23,6 +23,7 @@ static string GetInvokeType (string type) } } + internal override string GetAllInterfaceImplements () => "IJavaObject, IJavaPeerable"; internal override void WriteClassHandle (ClassGen type, string indent, bool requireNew) { diff --git a/tools/generator/Tests-Core/expected.ji/Android.Text.ISpanned.cs b/tools/generator/Tests-Core/expected.ji/Android.Text.ISpanned.cs index 7a815b6d5..714aff197 100644 --- a/tools/generator/Tests-Core/expected.ji/Android.Text.ISpanned.cs +++ b/tools/generator/Tests-Core/expected.ji/Android.Text.ISpanned.cs @@ -7,7 +7,7 @@ namespace Android.Text { // Metadata.xml XPath interface reference: path="/api/package[@name='android.text']/interface[@name='Spanned']" [Register ("android/text/Spanned", "", "Android.Text.ISpannedInvoker")] - public partial interface ISpanned : IJavaObject { + public partial interface ISpanned : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='android.text']/interface[@name='Spanned']/method[@name='getSpanFlags' and count(parameter)=1 and parameter[1][@type='java.lang.Object']]" [return:global::Android.Runtime.GeneratedEnum] diff --git a/tools/generator/Tests-Core/expected.ji/Android.Views.View.cs b/tools/generator/Tests-Core/expected.ji/Android.Views.View.cs index a06c080b4..3e7e73877 100644 --- a/tools/generator/Tests-Core/expected.ji/Android.Views.View.cs +++ b/tools/generator/Tests-Core/expected.ji/Android.Views.View.cs @@ -11,7 +11,7 @@ public partial class View : Java.Lang.Object { // Metadata.xml XPath interface reference: path="/api/package[@name='android.view']/interface[@name='View.OnClickListener']" [Register ("android/view/View$OnClickListener", "", "Android.Views.View/IOnClickListenerInvoker")] - public partial interface IOnClickListener : IJavaObject { + public partial interface IOnClickListener : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='android.view']/interface[@name='View.OnClickListener']/method[@name='onClick' and count(parameter)=1 and parameter[1][@type='android.view.View']]" [Register ("onClick", "(Landroid/view/View;)V", "GetOnClick_Landroid_view_View_Handler:Android.Views.View/IOnClickListenerInvoker, ")] diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterface.txt b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterface.txt index d4d9d1b9e..b06042e9c 100644 --- a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterface.txt +++ b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterface.txt @@ -30,7 +30,7 @@ public abstract class MyInterfaceConsts : MyInterface { // Metadata.xml XPath interface reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']" [Register ("java/code/IMyInterface", "", "java.code.IMyInterfaceInvoker")] -public partial interface IMyInterface : IJavaObject { +public partial interface IMyInterface : IJavaObject, IJavaPeerable { int Count { // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='get_Count' and count(parameter)=0]" diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceDeclaration.txt b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceDeclaration.txt new file mode 100644 index 000000000..15447c62b --- /dev/null +++ b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceDeclaration.txt @@ -0,0 +1,39 @@ +// Metadata.xml XPath interface reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']" +[Register ("java/code/IMyInterface", "", "java.code.IMyInterfaceInvoker")] +public partial interface IMyInterface : IJavaObject, IJavaPeerable { + + int Count { + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='get_Count' and count(parameter)=0]" + [Register ("get_Count", "()I", "Getget_CountHandler:java.code.IMyInterfaceInvoker, ")] get; + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='set_Count' and count(parameter)=1 and parameter[1][@type='int']]" + [Register ("set_Count", "(I)V", "Getset_Count_IHandler:java.code.IMyInterfaceInvoker, ")] set; + } + + java.lang.String Key { + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='get_Key' and count(parameter)=0]" + [Register ("get_Key", "()Ljava/lang/String;", "Getget_KeyHandler:java.code.IMyInterfaceInvoker, ")] get; + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='set_Key' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" + [Register ("set_Key", "(Ljava/lang/String;)V", "Getset_Key_Ljava_lang_String_Handler:java.code.IMyInterfaceInvoker, ")] set; + } + + int AbstractCount { + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='get_AbstractCount' and count(parameter)=0]" + [Register ("get_AbstractCount", "()I", "Getget_AbstractCountHandler:java.code.IMyInterfaceInvoker, ")] get; + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='set_AbstractCount' and count(parameter)=1 and parameter[1][@type='int']]" + [Register ("set_AbstractCount", "(I)V", "Getset_AbstractCount_IHandler:java.code.IMyInterfaceInvoker, ")] set; + } + + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='GetCountForKey' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" + [Register ("GetCountForKey", "(Ljava/lang/String;)I", "GetGetCountForKey_Ljava_lang_String_Handler:java.code.IMyInterfaceInvoker, ")] + int GetCountForKey (string key); + + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='Key' and count(parameter)=0]" + [Register ("Key", "()Ljava/lang/String;", "GetKeyHandler:java.code.IMyInterfaceInvoker, ")] + string Key (); + + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='AbstractMethod' and count(parameter)=0]" + [Register ("AbstractMethod", "()V", "GetAbstractMethodHandler:java.code.IMyInterfaceInvoker, ")] + void AbstractMethod (); + +} + diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceFields.txt b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceFields.txt index 085ad91e2..25ae46f12 100644 --- a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceFields.txt +++ b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceFields.txt @@ -1,6 +1,6 @@ // Metadata.xml XPath interface reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']" [Register ("java/code/IMyInterface", "", "java.code.IMyInterfaceInvoker")] -public partial interface IMyInterface : IJavaObject { +public partial interface IMyInterface : IJavaObject, IJavaPeerable { // Metadata.xml XPath field reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/field[@name='MyConstantField']" [Register ("MyConstantField")] diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceMethod.txt b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceMethod.txt new file mode 100644 index 000000000..b616be47a --- /dev/null +++ b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/JavaInterop1/WriteInterfaceMethod.txt @@ -0,0 +1,11 @@ +// Metadata.xml XPath interface reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']" +[Register ("java/code/IMyInterface", "", "java.code.IMyInterfaceInvoker")] +public partial interface IMyInterface : IJavaObject, IJavaPeerable { + + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='DoSomething' and count(parameter)=0]" + [global::Java.Interop.JavaInterfaceDefaultMethod] + [Register ("DoSomething", "()V", "GetDoSomethingHandler:java.code.IMyInterfaceInvoker, ")] + void DoSomething (); + +} + diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceDeclaration.txt b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/XamarinAndroid/WriteInterfaceDeclaration.txt similarity index 100% rename from tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceDeclaration.txt rename to tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/XamarinAndroid/WriteInterfaceDeclaration.txt diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/XamarinAndroid/WriteInterfaceMethod.txt b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/XamarinAndroid/WriteInterfaceMethod.txt new file mode 100644 index 000000000..e82dbe04a --- /dev/null +++ b/tools/generator/Tests/Unit-Tests/CodeGeneratorExpectedResults/XamarinAndroid/WriteInterfaceMethod.txt @@ -0,0 +1,11 @@ +// Metadata.xml XPath interface reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']" +[Register ("java/code/IMyInterface", "", "java.code.IMyInterfaceInvoker")] +public partial interface IMyInterface : IJavaObject { + + // Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='DoSomething' and count(parameter)=0]" + [global::Java.Interop.JavaInterfaceDefaultMethod] + [Register ("DoSomething", "()V", "GetDoSomethingHandler:java.code.IMyInterfaceInvoker, ")] + void DoSomething (); + +} + diff --git a/tools/generator/Tests/Unit-Tests/CodeGeneratorTests.cs b/tools/generator/Tests/Unit-Tests/CodeGeneratorTests.cs index 186b56c47..fa8fd2432 100644 --- a/tools/generator/Tests/Unit-Tests/CodeGeneratorTests.cs +++ b/tools/generator/Tests/Unit-Tests/CodeGeneratorTests.cs @@ -421,7 +421,7 @@ public void WriteInterfaceDeclaration () generator.WriteInterfaceDeclaration (iface, string.Empty); generator.Context.ContextTypes.Pop (); - Assert.AreEqual (GetExpected (nameof (WriteInterfaceDeclaration)), writer.ToString ().NormalizeLineEndings ()); + Assert.AreEqual (GetTargetedExpected (nameof (WriteInterfaceDeclaration)), writer.ToString ().NormalizeLineEndings ()); } [Test] diff --git a/tools/generator/Tests/expected.ji/Adapters/Xamarin.Test.IAdapter.cs b/tools/generator/Tests/expected.ji/Adapters/Xamarin.Test.IAdapter.cs index 09e19b4a1..71eed794c 100644 --- a/tools/generator/Tests/expected.ji/Adapters/Xamarin.Test.IAdapter.cs +++ b/tools/generator/Tests/expected.ji/Adapters/Xamarin.Test.IAdapter.cs @@ -7,7 +7,7 @@ namespace Xamarin.Test { // Metadata.xml XPath interface reference: path="/api/package[@name='xamarin.test']/interface[@name='Adapter']" [Register ("xamarin/test/Adapter", "", "Xamarin.Test.IAdapterInvoker")] - public partial interface IAdapter : IJavaObject { + public partial interface IAdapter : IJavaObject, IJavaPeerable { } diff --git a/tools/generator/Tests/expected.ji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs b/tools/generator/Tests/expected.ji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs index 83b61d242..f52c3ffef 100644 --- a/tools/generator/Tests/expected.ji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs +++ b/tools/generator/Tests/expected.ji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs @@ -8,7 +8,7 @@ namespace Com.Google.Android.Exoplayer.Drm { // Metadata.xml XPath interface reference: path="/api/package[@name='com.google.android.exoplayer.drm']/interface[@name='ExoMediaDrm.OnEventListener']" [Register ("com/google/android/exoplayer/drm/ExoMediaDrm$OnEventListener", "", "Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListenerInvoker")] [global::Java.Interop.JavaTypeParameters (new string [] {"T extends com.google.android.exoplayer.drm.ExoMediaCrypto"})] - public partial interface IExoMediaDrmOnEventListener : IJavaObject { + public partial interface IExoMediaDrmOnEventListener : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.exoplayer.drm']/interface[@name='ExoMediaDrm.OnEventListener']/method[@name='onEvent' and count(parameter)=5 and parameter[1][@type='com.google.android.exoplayer.drm.ExoMediaDrm<T>'] and parameter[2][@type='byte[]'] and parameter[3][@type='int'] and parameter[4][@type='int'] and parameter[5][@type='byte[]']]" [Register ("onEvent", "(Lcom/google/android/exoplayer/drm/ExoMediaDrm;[BII[B)V", "GetOnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayBHandler:Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListenerInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] @@ -189,7 +189,7 @@ internal static bool __IsEmpty (IExoMediaDrmOnEventListenerImplementor value) // Metadata.xml XPath interface reference: path="/api/package[@name='com.google.android.exoplayer.drm']/interface[@name='ExoMediaDrm']" [Register ("com/google/android/exoplayer/drm/ExoMediaDrm", "", "Com.Google.Android.Exoplayer.Drm.IExoMediaDrmInvoker")] [global::Java.Interop.JavaTypeParameters (new string [] {"T extends com.google.android.exoplayer.drm.ExoMediaCrypto"})] - public partial interface IExoMediaDrm : IJavaObject { + public partial interface IExoMediaDrm : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.exoplayer.drm']/interface[@name='ExoMediaDrm']/method[@name='setOnEventListener' and count(parameter)=1 and parameter[1][@type='com.google.android.exoplayer.drm.ExoMediaDrm.OnEventListener<T>']]" [Register ("setOnEventListener", "(Lcom/google/android/exoplayer/drm/ExoMediaDrm$OnEventListener;)V", "GetSetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_Handler:Com.Google.Android.Exoplayer.Drm.IExoMediaDrmInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II1.cs b/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II1.cs index 4283ad00d..5165d829e 100644 --- a/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II1.cs +++ b/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II1.cs @@ -7,7 +7,7 @@ namespace Xamarin.Test { // Metadata.xml XPath interface reference: path="/api/package[@name='xamarin.test']/interface[@name='I1']" [Register ("xamarin/test/I1", "", "Xamarin.Test.II1Invoker")] - public partial interface II1 : IJavaObject { + public partial interface II1 : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/interface[@name='I1']/method[@name='close' and count(parameter)=0]" [Register ("close", "()V", "GetCloseHandler:Xamarin.Test.II1Invoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II2.cs b/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II2.cs index 03777de4b..5306f70f6 100644 --- a/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II2.cs +++ b/tools/generator/Tests/expected.ji/InterfaceMethodsConflict/Xamarin.Test.II2.cs @@ -7,7 +7,7 @@ namespace Xamarin.Test { // Metadata.xml XPath interface reference: path="/api/package[@name='xamarin.test']/interface[@name='I2']" [Register ("xamarin/test/I2", "", "Xamarin.Test.II2Invoker")] - public partial interface II2 : IJavaObject { + public partial interface II2 : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/interface[@name='I2']/method[@name='close' and count(parameter)=0]" [Register ("close", "()V", "GetCloseHandler:Xamarin.Test.II2Invoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/expected.ji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs b/tools/generator/Tests/expected.ji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs index 399d15dc6..ac35892b5 100644 --- a/tools/generator/Tests/expected.ji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs +++ b/tools/generator/Tests/expected.ji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs @@ -15,7 +15,7 @@ public abstract partial class Action : global::Java.Lang.Object { // Metadata.xml XPath interface reference: path="/api/package[@name='xamarin.test']/interface[@name='NotificationCompatBase.Action.Factory']" [Register ("xamarin/test/NotificationCompatBase$Action$Factory", "", "Xamarin.Test.NotificationCompatBase/Action/IFactoryInvoker")] - public partial interface IFactory : IJavaObject { + public partial interface IFactory : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/interface[@name='NotificationCompatBase.Action.Factory']/method[@name='build' and count(parameter)=1 and parameter[1][@type='int']]" [Register ("build", "(I)Lxamarin/test/NotificationCompatBase$Action;", "GetBuild_IHandler:Xamarin.Test.NotificationCompatBase/Action/IFactoryInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericInterface.cs b/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericInterface.cs index d70c1c322..6a65dbda6 100644 --- a/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericInterface.cs +++ b/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericInterface.cs @@ -8,7 +8,7 @@ namespace Test.ME { // Metadata.xml XPath interface reference: path="/api/package[@name='test.me']/interface[@name='GenericInterface']" [Register ("test/me/GenericInterface", "", "Test.ME.IGenericInterfaceInvoker")] [global::Java.Interop.JavaTypeParameters (new string [] {"T"})] - public partial interface IGenericInterface : IJavaObject { + public partial interface IGenericInterface : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/interface[@name='GenericInterface']/method[@name='SetObject' and count(parameter)=1 and parameter[1][@type='T']]" [Register ("SetObject", "(Ljava/lang/Object;)V", "GetSetObject_Ljava_lang_Object_Handler:Test.ME.IGenericInterfaceInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericPropertyInterface.cs b/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericPropertyInterface.cs index 0407e179a..29dc4d262 100644 --- a/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericPropertyInterface.cs +++ b/tools/generator/Tests/expected.ji/TestInterface/Test.ME.IGenericPropertyInterface.cs @@ -8,7 +8,7 @@ namespace Test.ME { // Metadata.xml XPath interface reference: path="/api/package[@name='test.me']/interface[@name='GenericPropertyInterface']" [Register ("test/me/GenericPropertyInterface", "", "Test.ME.IGenericPropertyInterfaceInvoker")] [global::Java.Interop.JavaTypeParameters (new string [] {"T"})] - public partial interface IGenericPropertyInterface : IJavaObject { + public partial interface IGenericPropertyInterface : IJavaObject, IJavaPeerable { global::Java.Lang.Object Object { // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/interface[@name='GenericPropertyInterface']/method[@name='getObject' and count(parameter)=0]" diff --git a/tools/generator/Tests/expected.ji/TestInterface/Test.ME.ITestInterface.cs b/tools/generator/Tests/expected.ji/TestInterface/Test.ME.ITestInterface.cs index 414c61afc..83adcdac9 100644 --- a/tools/generator/Tests/expected.ji/TestInterface/Test.ME.ITestInterface.cs +++ b/tools/generator/Tests/expected.ji/TestInterface/Test.ME.ITestInterface.cs @@ -42,7 +42,7 @@ private TestInterfaceConsts () // Metadata.xml XPath interface reference: path="/api/package[@name='test.me']/interface[@name='TestInterface']" [Register ("test/me/TestInterface", "", "Test.ME.ITestInterfaceInvoker")] - public partial interface ITestInterface : IJavaObject { + public partial interface ITestInterface : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/interface[@name='TestInterface']/method[@name='getSpanFlags' and count(parameter)=1 and parameter[1][@type='java.lang.Object']]" [Register ("getSpanFlags", "(Ljava/lang/Object;)I", "GetGetSpanFlags_Ljava_lang_Object_Handler:Test.ME.ITestInterfaceInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/expected.ji/java.lang.Enum/Java.Lang.IComparable.cs b/tools/generator/Tests/expected.ji/java.lang.Enum/Java.Lang.IComparable.cs index 027268f0f..ea52c8365 100644 --- a/tools/generator/Tests/expected.ji/java.lang.Enum/Java.Lang.IComparable.cs +++ b/tools/generator/Tests/expected.ji/java.lang.Enum/Java.Lang.IComparable.cs @@ -8,7 +8,7 @@ namespace Java.Lang { // Metadata.xml XPath interface reference: path="/api/package[@name='java.lang']/interface[@name='Comparable']" [Register ("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")] [global::Java.Interop.JavaTypeParameters (new string [] {"T"})] - public partial interface IComparable : IJavaObject { + public partial interface IComparable : IJavaObject, IJavaPeerable { // Metadata.xml XPath method reference: path="/api/package[@name='java.lang']/interface[@name='Comparable']/method[@name='compareTo' and count(parameter)=1 and parameter[1][@type='T']]" [Register ("compareTo", "(Ljava/lang/Object;)I", "GetCompareTo_Ljava_lang_Object_Handler:Java.Lang.IComparableInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")] diff --git a/tools/generator/Tests/generator-Tests.csproj b/tools/generator/Tests/generator-Tests.csproj index 6e645eb07..5e32d5b7e 100644 --- a/tools/generator/Tests/generator-Tests.csproj +++ b/tools/generator/Tests/generator-Tests.csproj @@ -238,6 +238,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -349,9 +352,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest @@ -370,6 +370,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest