-
Notifications
You must be signed in to change notification settings - Fork 62
Closed
Labels
enhancementProposed change to current functionalityProposed change to current functionalitygeneratorIssues binding a Java library (generator, class-parse, etc.)Issues binding a Java library (generator, class-parse, etc.)
Description
Context: dotnet/android#3776
When using a Kotlin default constructor like:
class MaterialDialog(
val windowContext: Context,
val dialogBehavior: DialogBehavior = DEFAULT_BEHAVIOR
) : Dialog(windowContext, inferTheme(windowContext, dialogBehavior))
{ ... }
Kotlin will create 2 constructors, the "real" one and a synthetic one denoting which constructor is the default constructor using a kotlin.jvm.internal.DefaultConstructorMarker
parameter:
<constructor deprecated="not deprecated" final="false" name="MaterialDialog" static="false" visibility="public" bridge="false" synthetic="false" jni-signature="(Landroid/content/Context;Lcom/afollestad/materialdialogs/DialogBehavior;)V">
<parameter name="windowContext" type="android.content.Context" jni-type="Landroid/content/Context;" not-null="true"/>
<parameter name="dialogBehavior" type="com.afollestad.materialdialogs.DialogBehavior" jni-type="Lcom/afollestad/materialdialogs/DialogBehavior;" not-null="true"/>
</constructor>
<constructor deprecated="not deprecated" final="false" name="MaterialDialog" static="false" visibility="public" bridge="false" synthetic="true" jni-signature="(Landroid/content/Context;Lcom/afollestad/materialdialogs/DialogBehavior;ILkotlin/jvm/internal/DefaultConstructorMarker;)V">
<parameter name="p0" type="android.content.Context" jni-type="Landroid/content/Context;"/>
<parameter name="p1" type="com.afollestad.materialdialogs.DialogBehavior" jni-type="Lcom/afollestad/materialdialogs/DialogBehavior;"/>
<parameter name="p2" type="int" jni-type="I"/>
<parameter name="p3" type="kotlin.jvm.internal.DefaultConstructorMarker" jni-type="Lkotlin/jvm/internal/DefaultConstructorMarker;"/>
</constructor>
The kotlin.jvm.internal.DefaultConstructorMarker
type is not available in the Xamarin.Kotlin.StdLib
NuGet package because the type in internal
.
Thus when trying to bind the constructor, ApiXmlAdjuster
reports this "error":
Error while processing '[Constructor] MaterialDialog(android.content.Context p0, com.afollestad.materialdialogs.DialogBehavior p1, int p2, kotlin.jvm.internal.DefaultConstructorMarker p3)' in '[Class] com.afollestad.materialdialogs.MaterialDialog': Type 'kotlin.jvm.internal.DefaultConstructorMarker' was not found.
This is actually good, as we shouldn't bind this synthetic constructor, but we should detect this Kotlin-ism and not emit the "error", as it misleads users into thinking they need to do something to fix it.
Metadata
Metadata
Assignees
Labels
enhancementProposed change to current functionalityProposed change to current functionalitygeneratorIssues binding a Java library (generator, class-parse, etc.)Issues binding a Java library (generator, class-parse, etc.)