diff --git a/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/metadata.kt b/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/metadata.kt index 2f21311..32d579f 100644 --- a/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/metadata.kt +++ b/kotlin/codegen/src/main/java/com/squareup/moshi/kotlin/codegen/metadata.kt @@ -322,7 +322,7 @@ private fun String.escapeDollarSigns(): String { private fun TypeName.unwrapTypeAlias(): TypeName { return when (this) { is ClassName -> { - tag()?.type ?: this + tag()?.type?.unwrapTypeAlias() ?: this } is ParameterizedTypeName -> { return (rawType.unwrapTypeAlias() as ClassName).parameterizedBy(typeArguments.map { it.unwrapTypeAlias() }) diff --git a/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt b/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt index b1a6f91..99005b6 100644 --- a/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt +++ b/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt @@ -416,10 +416,10 @@ class DualKotlinTest(useReflection: Boolean) { val testValue = TypeAliasUnwrapping( simpleClass = 6, - parameterized = TypeAliasGeneric(6), - wildcardIn = TypeAliasGeneric(6), - wildcardOut = TypeAliasGeneric(6), - complex = TypeAliasGeneric(listOf(TypeAliasGeneric(6))) + parameterized = GenericClass(6), + wildcardIn = GenericClass(6), + wildcardOut = GenericClass(6), + complex = GenericClass(listOf(GenericClass(6))) ) assertThat(adapter.toJson(testValue)).isEqualTo(testJson) @@ -430,18 +430,19 @@ class DualKotlinTest(useReflection: Boolean) { @JsonClass(generateAdapter = true) data class TypeAliasUnwrapping( val simpleClass: TypeAlias, - val parameterized: TypeAliasGeneric, - val wildcardIn: TypeAliasGeneric, - val wildcardOut: TypeAliasGeneric, - @Suppress("REDUNDANT_PROJECTION") - val complex: TypeAliasGeneric>> + val parameterized: GenericClass, + val wildcardIn: GenericClass, + val wildcardOut: GenericClass, + val complex: GenericClass ) } typealias TypeAlias = Int +@Suppress("REDUNDANT_PROJECTION") +typealias GenericTypeAlias = List> @JsonClass(generateAdapter = true) -data class TypeAliasGeneric(val value: T) +data class GenericClass(val value: T) // Has to be outside since inline classes are only allowed on top level @JsonClass(generateAdapter = true)