diff --git a/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt index 53e5303d335..290a9030b60 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize.k2/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt @@ -80,7 +80,7 @@ object FirParcelizePropertyChecker : FirPropertyChecker() { private fun getCustomParcelerTypes(annotations: List, session: FirSession): Set = annotations.mapNotNullTo(mutableSetOf()) { annotation -> if (annotation.fqName(session) in ParcelizeNames.TYPE_PARCELER_FQ_NAMES && annotation.typeArguments.size == 2) { - annotation.typeArguments[0].toConeTypeProjection().type + annotation.typeArguments[0].toConeTypeProjection().type?.fullyExpandedType(session) } else { null } diff --git a/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.fir.kt b/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.fir.kt index bca096f35d5..b1a7f813540 100644 --- a/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.fir.kt +++ b/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.fir.kt @@ -4,6 +4,10 @@ package test import kotlinx.parcelize.* import android.os.* +class Data +typealias StringData = Data +typealias NullableStringData = Data? + object StringParceler : Parceler { override fun create(parcel: Parcel) = TODO() override fun String.write(parcel: Parcel, flags: Int) = TODO() @@ -19,6 +23,16 @@ class StringClassParceler : Parceler { override fun String.write(parcel: Parcel, flags: Int) = TODO() } +class StringDataParceler : Parceler { + override fun create(parcel: Parcel) = TODO() + override fun StringData.write(parcel: Parcel, flags: Int) = TODO() +} + +class NullableStringDataParceler : Parceler { + override fun create(parcel: Parcel) = TODO() + override fun NullableStringData.write(parcel: Parcel, flags: Int) = TODO() +} + @TypeParceler class MissingParcelizeAnnotation(val a: @WriteWith String) @@ -43,3 +57,22 @@ class Test2(@TypeParceler @TypeParceler<String, StringParceler> @TypeParceler<String, CharSequenceParceler> class Test3(val a: String) : Parcelable + +@Parcelize +@TypeParceler +class StringDataParcelerTest( + val a: StringData, + val b: StringData?, + val c: Data, + val d: Data?, +) : Parcelable + +@Parcelize +@TypeParceler +class NullableStringDataParcelerTest( + val a: NullableStringData, + val b: StringData, + val c: StringData?, + val d: Data, + val e: Data?, +) : Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.kt b/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.kt index e55bde21969..1ec1a2ce8d7 100644 --- a/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.kt +++ b/plugins/parcelize/parcelize-compiler/testData/diagnostics/customParcelers.kt @@ -4,6 +4,10 @@ package test import kotlinx.parcelize.* import android.os.* +class Data +typealias StringData = Data +typealias NullableStringData = Data? + object StringParceler : Parceler { override fun create(parcel: Parcel) = TODO() override fun String.write(parcel: Parcel, flags: Int) = TODO() @@ -19,6 +23,16 @@ class StringClassParceler : Parceler { override fun String.write(parcel: Parcel, flags: Int) = TODO() } +class StringDataParceler : Parceler { + override fun create(parcel: Parcel) = TODO() + override fun StringData.write(parcel: Parcel, flags: Int) = TODO() +} + +class NullableStringDataParceler : Parceler { + override fun create(parcel: Parcel) = TODO() + override fun NullableStringData.write(parcel: Parcel, flags: Int) = TODO() +} + @TypeParceler class MissingParcelizeAnnotation(val a: @WriteWith String) @@ -43,3 +57,22 @@ class Test2(@TypeParceler @TypeParceler<String, StringParceler> @TypeParceler<String, CharSequenceParceler> class Test3(val a: String) : Parcelable + +@Parcelize +@TypeParceler +class StringDataParcelerTest( + val a: StringData, + val b: StringData?, + val c: Data, + val d: Data?, +) : Parcelable + +@Parcelize +@TypeParceler +class NullableStringDataParcelerTest( + val a: NullableStringData, + val b: StringData, + val c: StringData?, + val d: Data, + val e: Data?, +) : Parcelable