Open
Description
VS 17.7.4 / X 17.7.0.216 / XA 13.2.1.2
While trying to generate legacy xamarin android bindings targeting android 13 with class-parse and XAJavaInterop1 for two different aars, Core and Tracker CS1503 and CS0266 are occurring in the generated IJobApiInvoker class for Tracker which depends on Core - Core builds ok.
error CS1503: Argument 1: cannot convert from 'System.Collections.Generic.IList<string>' to 'System.Collections.IList?'
error CS0266: Cannot implicitly convert type 'System.Collections.IList' to 'System.Collections.Generic.IList<string>'. An explicit conversion exists (are you missing a cast?)
Core api.xml snippet:
<interface abstract="true" deprecated="not deprecated" final="false" name="JobApi" static="false" visibility="public" jni-signature="Lcom/kochava/core/job/job/internal/JobApi;">
<method abstract="true" deprecated="not deprecated" final="false" name="getDependencies" jni-signature="()Ljava/util/List;" bridge="false" native="false" return="java.util.List<java.lang.String>" jni-return="Ljava/util/List<Ljava/lang/String;>;" static="false" synchronized="false" synthetic="false" visibility="public" return-not-null="true" />
</interface>
Tracker api.xml snippet:
<interface abstract="true" deprecated="not deprecated" final="false" name="JobApi" static="false" visibility="public" jni-signature="Lcom/kochava/tracker/job/internal/JobApi;">
<implements name="com.kochava.core.job.job.internal.JobApi" name-generic-aware="com.kochava.core.job.job.internal.JobApi<com.kochava.tracker.job.internal.JobParams>" jni-type="Lcom/kochava/core/job/job/internal/JobApi<Lcom/kochava/tracker/job/internal/JobParams;>;" />
</interface>
Core bgen'd code snippet that compiles:
// Metadata.xml XPath interface reference: path="/api/package[@name='com.kochava.core.job.job.internal']/interface[@name='JobApi']"
[Register ("com/kochava/core/job/job/internal/JobApi", "", "Com.Kochava.Core.Job.Job.Internal.IJobApiInvoker")]
[global::Java.Interop.JavaTypeParameters (new string [] {"JobHostParametersType"})]
public partial interface IJobApi : IJavaObject, IJavaPeerable {
global::System.Collections.Generic.IList<string> Dependencies {
// Metadata.xml XPath method reference: path="/api/package[@name='com.kochava.core.job.job.internal']/interface[@name='JobApi']/method[@name='getDependencies' and count(parameter)=0]"
[Register ("getDependencies", "()Ljava/util/List;", "GetGetDependenciesHandler:Com.Kochava.Core.Job.Job.Internal.IJobApiInvoker, KochavaCoreBindings.Droid")]
get;
}
}
[global::Android.Runtime.Register ("com/kochava/core/job/job/internal/JobApi", DoNotGenerateAcw=true)]
internal partial class IJobApiInvoker : global::Java.Lang.Object, IJobApi {
static IntPtr n_GetDependencies (IntPtr jnienv, IntPtr native__this)
{
var __this = global::Java.Lang.Object.GetObject<global::Com.Kochava.Core.Job.Job.Internal.IJobApi> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
return global::Android.Runtime.JavaList<string>.ToLocalJniHandle (__this.Dependencies);
}
#pragma warning restore 0169
IntPtr id_getDependencies;
public unsafe global::System.Collections.Generic.IList<string> Dependencies {
get {
if (id_getDependencies == IntPtr.Zero)
id_getDependencies = JNIEnv.GetMethodID (class_ref, "getDependencies", "()Ljava/util/List;");
return global::Android.Runtime.JavaList<string>.FromJniHandle (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getDependencies), JniHandleOwnership.TransferLocalRef);
}
}
}
Tracker bgen'd code snippet that fails compile:
// Metadata.xml XPath interface reference: path="/api/package[@name='com.kochava.tracker.job.internal']/interface[@name='JobApi']"
[Register ("com/kochava/tracker/job/internal/JobApi", "", "Com.Kochava.Tracker.Job.Internal.IJobApiInvoker")]
public partial interface IJobApi : global::Com.Kochava.Core.Job.Job.Internal.IJobApi {
}
[global::Android.Runtime.Register ("com/kochava/tracker/job/internal/JobApi", DoNotGenerateAcw=true)]
internal partial class IJobApiInvoker : global::Java.Lang.Object, IJobApi {
static IntPtr n_GetDependencies (IntPtr jnienv, IntPtr native__this)
{
var __this = global::Java.Lang.Object.GetObject<global::Com.Kochava.Tracker.Job.Internal.IJobApi> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
//error CS1503: Argument 1: cannot convert from 'System.Collections.Generic.IList<string>' to 'System.Collections.IList?'
return global::Android.Runtime.JavaList.ToLocalJniHandle (__this.Dependencies);
}
#pragma warning restore 0169
IntPtr id_getDependencies;
public unsafe global::System.Collections.Generic.IList<global::System.String> Dependencies {
get {
if (id_getDependencies == IntPtr.Zero)
id_getDependencies = JNIEnv.GetMethodID (class_ref, "getDependencies", "()Ljava/util/List;");
//error CS0266: Cannot implicitly convert type 'System.Collections.IList' to 'System.Collections.Generic.IList<string>'. An explicit conversion exists (are you missing a cast?)
return global::Android.Runtime.JavaList.FromJniHandle (JNIEnv.CallObjectMethod (((global::Java.Lang.Object) this).Handle, id_getDependencies), JniHandleOwnership.TransferLocalRef);
}
}
}