Skip to content

Commit 4a5bbae

Browse files
committed
Test XAJavaInterop1 output
Trying to build in xamarin-android resulted in lots of errors: …/mcw/Android.Text.IInputType.cs(34,17): error CS0122: 'Object._members' is inaccessible due to its protection level Oops. Looks like at least *some* tests need to run w/ XAJavaInterop1 output! Update `BaseGeneratorTest` to use `XAJavaInterop1` output for the tests, update `generator` so that the tests *pass*, and update the expected output accordingly.
1 parent 28d9b04 commit 4a5bbae

21 files changed

+292
-697
lines changed

tests/generator-Tests/Integration-Tests/BaseGeneratorTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ protected void Run (CodeGenerationTarget target, string outputPath, string apiDe
143143
AdditionalSourceDirectories.Clear ();
144144

145145
Options.CodeGenerationTarget = target;
146-
Options.EmitLegacyInterfaceInvokers = target == CodeGenerationTarget.XAJavaInterop1;
146+
Options.EmitLegacyInterfaceInvokers = false;
147147
Options.ApiDescriptionFile = FullPath (apiDescriptionFile);
148148
Options.ManagedCallableWrapperSourceOutputDirectory = FullPath (outputPath);
149149

tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1193,7 +1193,6 @@ protected override CodeGenerationOptions CreateOptions ()
11931193
SupportInterfaceConstants = true,
11941194
SupportNestedInterfaceTypes = true,
11951195
SupportNullableReferenceTypes = true,
1196-
EmitLegacyInterfaceInvokers = Target == CodeGenerationTarget.XAJavaInterop1,
11971196
};
11981197
return options;
11991198
}

tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,57 +20,34 @@ public partial interface IExtendedInterface : IJavaObject, IJavaPeerable {
2020

2121
[global::Android.Runtime.Register ("xamarin/test/ExtendedInterface", DoNotGenerateAcw=true)]
2222
internal partial class IExtendedInterfaceInvoker : global::Java.Lang.Object, IExtendedInterface {
23-
static readonly JniPeerMembers _members = new XAPeerMembers ("xamarin/test/ExtendedInterface", typeof (IExtendedInterfaceInvoker));
24-
2523
static IntPtr java_class_ref {
26-
get { return _members.JniPeerType.PeerReference.Handle; }
24+
get { return _members_IExtendedInterface.JniPeerType.PeerReference.Handle; }
2725
}
2826

2927
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
3028
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
3129
public override global::Java.Interop.JniPeerMembers JniPeerMembers {
32-
get { return _members; }
30+
get { return _members_IExtendedInterface; }
3331
}
3432

3533
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
3634
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
3735
protected override IntPtr ThresholdClass {
38-
get { return class_ref; }
36+
get { return _members_IExtendedInterface.JniPeerType.PeerReference.Handle; }
3937
}
4038

4139
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
4240
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
4341
protected override global::System.Type ThresholdType {
44-
get { return _members.ManagedPeerType; }
42+
get { return _members_IExtendedInterface.ManagedPeerType; }
4543
}
4644

47-
new IntPtr class_ref;
45+
static readonly JniPeerMembers _members_IExtendedInterface = new XAPeerMembers ("xamarin/test/ExtendedInterface", typeof (IExtendedInterfaceInvoker));
4846

49-
public static IExtendedInterface GetObject (IntPtr handle, JniHandleOwnership transfer)
50-
{
51-
return global::Java.Lang.Object.GetObject<IExtendedInterface> (handle, transfer);
52-
}
53-
54-
static IntPtr Validate (IntPtr handle)
55-
{
56-
if (!JNIEnv.IsInstanceOf (handle, java_class_ref))
57-
throw new InvalidCastException ($"Unable to convert instance of type '{JNIEnv.GetClassNameFromInstance (handle)}' to type 'xamarin.test.ExtendedInterface'.");
58-
return handle;
59-
}
60-
61-
protected override void Dispose (bool disposing)
62-
{
63-
if (this.class_ref != IntPtr.Zero)
64-
JNIEnv.DeleteGlobalRef (this.class_ref);
65-
this.class_ref = IntPtr.Zero;
66-
base.Dispose (disposing);
67-
}
47+
static readonly JniPeerMembers _members_IBaseInterface = new XAPeerMembers ("xamarin/test/BaseInterface", typeof (IExtendedInterfaceInvoker));
6848

69-
public IExtendedInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : base (Validate (handle), transfer)
49+
public IExtendedInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer)
7050
{
71-
IntPtr local_ref = JNIEnv.GetObjectClass (((global::Java.Lang.Object) this).Handle);
72-
this.class_ref = JNIEnv.NewGlobalRef (local_ref);
73-
JNIEnv.DeleteLocalRef (local_ref);
7451
}
7552

7653
static Delegate cb_extendedMethod;
@@ -89,12 +66,13 @@ static void n_ExtendedMethod (IntPtr jnienv, IntPtr native__this)
8966
}
9067
#pragma warning restore 0169
9168

92-
IntPtr id_extendedMethod;
9369
public unsafe void ExtendedMethod ()
9470
{
95-
if (id_extendedMethod == IntPtr.Zero)
96-
id_extendedMethod = JNIEnv.GetMethodID (class_ref, "extendedMethod", "()V");
97-
JNIEnv.CallVoidMethod (((global::Java.Lang.Object) this).Handle, id_extendedMethod);
71+
const string __id = "extendedMethod.()V";
72+
try {
73+
_members_IExtendedInterface.InstanceMethods.InvokeAbstractVoidMethod (__id, this, null);
74+
} finally {
75+
}
9876
}
9977

10078
static Delegate cb_baseMethod;
@@ -113,12 +91,13 @@ static void n_BaseMethod (IntPtr jnienv, IntPtr native__this)
11391
}
11492
#pragma warning restore 0169
11593

116-
IntPtr id_baseMethod;
11794
public unsafe void BaseMethod ()
11895
{
119-
if (id_baseMethod == IntPtr.Zero)
120-
id_baseMethod = JNIEnv.GetMethodID (class_ref, "baseMethod", "()V");
121-
JNIEnv.CallVoidMethod (((global::Java.Lang.Object) this).Handle, id_baseMethod);
96+
const string __id = "baseMethod.()V";
97+
try {
98+
_members_IBaseInterface.InstanceMethods.InvokeAbstractVoidMethod (__id, this, null);
99+
} finally {
100+
}
122101
}
123102

124103
}

tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -29,57 +29,32 @@ protected internal partial interface IProtectedInterface : IJavaObject, IJavaPee
2929

3030
[global::Android.Runtime.Register ("xamarin/test/PublicClass$ProtectedInterface", DoNotGenerateAcw=true)]
3131
internal partial class IProtectedInterfaceInvoker : global::Java.Lang.Object, IProtectedInterface {
32-
static readonly JniPeerMembers _members = new XAPeerMembers ("xamarin/test/PublicClass$ProtectedInterface", typeof (IProtectedInterfaceInvoker));
33-
3432
static IntPtr java_class_ref {
35-
get { return _members.JniPeerType.PeerReference.Handle; }
33+
get { return _members_IProtectedInterface.JniPeerType.PeerReference.Handle; }
3634
}
3735

3836
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
3937
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
4038
public override global::Java.Interop.JniPeerMembers JniPeerMembers {
41-
get { return _members; }
39+
get { return _members_IProtectedInterface; }
4240
}
4341

4442
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
4543
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
4644
protected override IntPtr ThresholdClass {
47-
get { return class_ref; }
45+
get { return _members_IProtectedInterface.JniPeerType.PeerReference.Handle; }
4846
}
4947

5048
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
5149
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
5250
protected override global::System.Type ThresholdType {
53-
get { return _members.ManagedPeerType; }
54-
}
55-
56-
new IntPtr class_ref;
57-
58-
public static IProtectedInterface GetObject (IntPtr handle, JniHandleOwnership transfer)
59-
{
60-
return global::Java.Lang.Object.GetObject<IProtectedInterface> (handle, transfer);
51+
get { return _members_IProtectedInterface.ManagedPeerType; }
6152
}
6253

63-
static IntPtr Validate (IntPtr handle)
64-
{
65-
if (!JNIEnv.IsInstanceOf (handle, java_class_ref))
66-
throw new InvalidCastException ($"Unable to convert instance of type '{JNIEnv.GetClassNameFromInstance (handle)}' to type 'xamarin.test.PublicClass.ProtectedInterface'.");
67-
return handle;
68-
}
69-
70-
protected override void Dispose (bool disposing)
71-
{
72-
if (this.class_ref != IntPtr.Zero)
73-
JNIEnv.DeleteGlobalRef (this.class_ref);
74-
this.class_ref = IntPtr.Zero;
75-
base.Dispose (disposing);
76-
}
54+
static readonly JniPeerMembers _members_IProtectedInterface = new XAPeerMembers ("xamarin/test/PublicClass$ProtectedInterface", typeof (IProtectedInterfaceInvoker));
7755

78-
public IProtectedInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : base (Validate (handle), transfer)
56+
public IProtectedInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer)
7957
{
80-
IntPtr local_ref = JNIEnv.GetObjectClass (((global::Java.Lang.Object) this).Handle);
81-
this.class_ref = JNIEnv.NewGlobalRef (local_ref);
82-
JNIEnv.DeleteLocalRef (local_ref);
8358
}
8459

8560
static Delegate cb_foo;
@@ -98,12 +73,13 @@ static void n_Foo (IntPtr jnienv, IntPtr native__this)
9873
}
9974
#pragma warning restore 0169
10075

101-
IntPtr id_foo;
10276
public unsafe void Foo ()
10377
{
104-
if (id_foo == IntPtr.Zero)
105-
id_foo = JNIEnv.GetMethodID (class_ref, "foo", "()V");
106-
JNIEnv.CallVoidMethod (((global::Java.Lang.Object) this).Handle, id_foo);
78+
const string __id = "foo.()V";
79+
try {
80+
_members_IProtectedInterface.InstanceMethods.InvokeAbstractVoidMethod (__id, this, null);
81+
} finally {
82+
}
10783
}
10884

10985
}

tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.IAdapter.cs

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,57 +12,32 @@ public partial interface IAdapter : IJavaObject, IJavaPeerable {
1212

1313
[global::Android.Runtime.Register ("xamarin/test/Adapter", DoNotGenerateAcw=true)]
1414
internal partial class IAdapterInvoker : global::Java.Lang.Object, IAdapter {
15-
static readonly JniPeerMembers _members = new XAPeerMembers ("xamarin/test/Adapter", typeof (IAdapterInvoker));
16-
1715
static IntPtr java_class_ref {
18-
get { return _members.JniPeerType.PeerReference.Handle; }
16+
get { return _members_IAdapter.JniPeerType.PeerReference.Handle; }
1917
}
2018

2119
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
2220
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
2321
public override global::Java.Interop.JniPeerMembers JniPeerMembers {
24-
get { return _members; }
22+
get { return _members_IAdapter; }
2523
}
2624

2725
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
2826
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
2927
protected override IntPtr ThresholdClass {
30-
get { return class_ref; }
28+
get { return _members_IAdapter.JniPeerType.PeerReference.Handle; }
3129
}
3230

3331
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
3432
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
3533
protected override global::System.Type ThresholdType {
36-
get { return _members.ManagedPeerType; }
37-
}
38-
39-
new IntPtr class_ref;
40-
41-
public static IAdapter GetObject (IntPtr handle, JniHandleOwnership transfer)
42-
{
43-
return global::Java.Lang.Object.GetObject<IAdapter> (handle, transfer);
34+
get { return _members_IAdapter.ManagedPeerType; }
4435
}
4536

46-
static IntPtr Validate (IntPtr handle)
47-
{
48-
if (!JNIEnv.IsInstanceOf (handle, java_class_ref))
49-
throw new InvalidCastException ($"Unable to convert instance of type '{JNIEnv.GetClassNameFromInstance (handle)}' to type 'xamarin.test.Adapter'.");
50-
return handle;
51-
}
52-
53-
protected override void Dispose (bool disposing)
54-
{
55-
if (this.class_ref != IntPtr.Zero)
56-
JNIEnv.DeleteGlobalRef (this.class_ref);
57-
this.class_ref = IntPtr.Zero;
58-
base.Dispose (disposing);
59-
}
37+
static readonly JniPeerMembers _members_IAdapter = new XAPeerMembers ("xamarin/test/Adapter", typeof (IAdapterInvoker));
6038

61-
public IAdapterInvoker (IntPtr handle, JniHandleOwnership transfer) : base (Validate (handle), transfer)
39+
public IAdapterInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer)
6240
{
63-
IntPtr local_ref = JNIEnv.GetObjectClass (((global::Java.Lang.Object) this).Handle);
64-
this.class_ref = JNIEnv.NewGlobalRef (local_ref);
65-
JNIEnv.DeleteLocalRef (local_ref);
6641
}
6742

6843
}

tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.ISpinnerAdapter.cs

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,57 +12,34 @@ public partial interface ISpinnerAdapter : global::Xamarin.Test.IAdapter {
1212

1313
[global::Android.Runtime.Register ("xamarin/test/SpinnerAdapter", DoNotGenerateAcw=true)]
1414
internal partial class ISpinnerAdapterInvoker : global::Java.Lang.Object, ISpinnerAdapter {
15-
static readonly JniPeerMembers _members = new XAPeerMembers ("xamarin/test/SpinnerAdapter", typeof (ISpinnerAdapterInvoker));
16-
1715
static IntPtr java_class_ref {
18-
get { return _members.JniPeerType.PeerReference.Handle; }
16+
get { return _members_ISpinnerAdapter.JniPeerType.PeerReference.Handle; }
1917
}
2018

2119
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
2220
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
2321
public override global::Java.Interop.JniPeerMembers JniPeerMembers {
24-
get { return _members; }
22+
get { return _members_ISpinnerAdapter; }
2523
}
2624

2725
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
2826
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
2927
protected override IntPtr ThresholdClass {
30-
get { return class_ref; }
28+
get { return _members_ISpinnerAdapter.JniPeerType.PeerReference.Handle; }
3129
}
3230

3331
[global::System.Diagnostics.DebuggerBrowsable (global::System.Diagnostics.DebuggerBrowsableState.Never)]
3432
[global::System.ComponentModel.EditorBrowsable (global::System.ComponentModel.EditorBrowsableState.Never)]
3533
protected override global::System.Type ThresholdType {
36-
get { return _members.ManagedPeerType; }
34+
get { return _members_ISpinnerAdapter.ManagedPeerType; }
3735
}
3836

39-
new IntPtr class_ref;
37+
static readonly JniPeerMembers _members_ISpinnerAdapter = new XAPeerMembers ("xamarin/test/SpinnerAdapter", typeof (ISpinnerAdapterInvoker));
4038

41-
public static ISpinnerAdapter GetObject (IntPtr handle, JniHandleOwnership transfer)
42-
{
43-
return global::Java.Lang.Object.GetObject<ISpinnerAdapter> (handle, transfer);
44-
}
45-
46-
static IntPtr Validate (IntPtr handle)
47-
{
48-
if (!JNIEnv.IsInstanceOf (handle, java_class_ref))
49-
throw new InvalidCastException ($"Unable to convert instance of type '{JNIEnv.GetClassNameFromInstance (handle)}' to type 'xamarin.test.SpinnerAdapter'.");
50-
return handle;
51-
}
52-
53-
protected override void Dispose (bool disposing)
54-
{
55-
if (this.class_ref != IntPtr.Zero)
56-
JNIEnv.DeleteGlobalRef (this.class_ref);
57-
this.class_ref = IntPtr.Zero;
58-
base.Dispose (disposing);
59-
}
39+
static readonly JniPeerMembers _members_IAdapter = new XAPeerMembers ("xamarin/test/Adapter", typeof (ISpinnerAdapterInvoker));
6040

61-
public ISpinnerAdapterInvoker (IntPtr handle, JniHandleOwnership transfer) : base (Validate (handle), transfer)
41+
public ISpinnerAdapterInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer)
6242
{
63-
IntPtr local_ref = JNIEnv.GetObjectClass (((global::Java.Lang.Object) this).Handle);
64-
this.class_ref = JNIEnv.NewGlobalRef (local_ref);
65-
JNIEnv.DeleteLocalRef (local_ref);
6643
}
6744

6845
}

0 commit comments

Comments
 (0)