mirror of
https://github.com/fankes/moshi.git
synced 2025-10-20 00:19:21 +08:00
Some miscellaneous kotlinpoet updates (#786)
* KotlinPoet 1.0.1 * Nix asNullableIf in favor of plain copy() function use * Add a test for packages that look like classes Resolves #783
This commit is contained in:
@@ -25,7 +25,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.squareup</groupId>
|
<groupId>com.squareup</groupId>
|
||||||
<artifactId>kotlinpoet</artifactId>
|
<artifactId>kotlinpoet</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.auto</groupId>
|
<groupId>com.google.auto</groupId>
|
||||||
|
@@ -35,18 +35,18 @@ open class TypeResolver {
|
|||||||
|
|
||||||
is ParameterizedTypeName -> {
|
is ParameterizedTypeName -> {
|
||||||
typeName.rawType.parameterizedBy(*(typeName.typeArguments.map { resolve(it) }.toTypedArray()))
|
typeName.rawType.parameterizedBy(*(typeName.typeArguments.map { resolve(it) }.toTypedArray()))
|
||||||
.asNullableIf(typeName.isNullable)
|
.copy(nullable = typeName.isNullable)
|
||||||
}
|
}
|
||||||
|
|
||||||
is WildcardTypeName -> {
|
is WildcardTypeName -> {
|
||||||
when {
|
when {
|
||||||
typeName.inTypes.size == 1 -> {
|
typeName.inTypes.size == 1 -> {
|
||||||
WildcardTypeName.consumerOf(resolve(typeName.inTypes[0]))
|
WildcardTypeName.consumerOf(resolve(typeName.inTypes[0]))
|
||||||
.asNullableIf(typeName.isNullable)
|
.copy(nullable = typeName.isNullable)
|
||||||
}
|
}
|
||||||
typeName.outTypes.size == 1 -> {
|
typeName.outTypes.size == 1 -> {
|
||||||
WildcardTypeName.producerOf(resolve(typeName.outTypes[0]))
|
WildcardTypeName.producerOf(resolve(typeName.outTypes[0]))
|
||||||
.asNullableIf(typeName.isNullable)
|
.copy(nullable = typeName.isNullable)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
throw IllegalArgumentException(
|
throw IllegalArgumentException(
|
||||||
|
@@ -26,7 +26,3 @@ internal fun TypeName.rawType(): ClassName {
|
|||||||
else -> throw IllegalArgumentException("Cannot get raw type from $this")
|
else -> throw IllegalArgumentException("Cannot get raw type from $this")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun TypeName.asNullableIf(condition: Boolean): TypeName {
|
|
||||||
return if (condition) copy(nullable = true) else this
|
|
||||||
}
|
|
||||||
|
@@ -77,17 +77,17 @@ internal fun Type.asTypeName(
|
|||||||
if (hasFlexibleUpperBound()) {
|
if (hasFlexibleUpperBound()) {
|
||||||
return WildcardTypeName.producerOf(
|
return WildcardTypeName.producerOf(
|
||||||
flexibleUpperBound.asTypeName(nameResolver, getTypeParameter, useAbbreviatedType))
|
flexibleUpperBound.asTypeName(nameResolver, getTypeParameter, useAbbreviatedType))
|
||||||
.asNullableIf(nullable)
|
.copy(nullable = nullable)
|
||||||
} else if (hasOuterType()) {
|
} else if (hasOuterType()) {
|
||||||
return WildcardTypeName.consumerOf(
|
return WildcardTypeName.consumerOf(
|
||||||
outerType.asTypeName(nameResolver, getTypeParameter, useAbbreviatedType))
|
outerType.asTypeName(nameResolver, getTypeParameter, useAbbreviatedType))
|
||||||
.asNullableIf(nullable)
|
.copy(nullable = nullable)
|
||||||
}
|
}
|
||||||
|
|
||||||
val realType = when {
|
val realType = when {
|
||||||
hasTypeParameter() -> return getTypeParameter(typeParameter)
|
hasTypeParameter() -> return getTypeParameter(typeParameter)
|
||||||
.asTypeName(nameResolver, getTypeParameter, useAbbreviatedType)
|
.asTypeName(nameResolver, getTypeParameter, useAbbreviatedType)
|
||||||
.asNullableIf(nullable)
|
.copy(nullable = nullable)
|
||||||
hasTypeParameterName() -> typeParameterName
|
hasTypeParameterName() -> typeParameterName
|
||||||
useAbbreviatedType && hasAbbreviatedType() -> abbreviatedType.typeAliasName
|
useAbbreviatedType && hasAbbreviatedType() -> abbreviatedType.typeAliasName
|
||||||
else -> className
|
else -> className
|
||||||
@@ -121,5 +121,5 @@ internal fun Type.asTypeName(
|
|||||||
typeName = (typeName as ClassName).parameterizedBy(*remappedArgs)
|
typeName = (typeName as ClassName).parameterizedBy(*remappedArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
return typeName.asNullableIf(nullable)
|
return typeName.copy(nullable = nullable)
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
package com.squareup.moshi.kotlin.codgen.LooksLikeAClass
|
||||||
|
|
||||||
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://github.com/square/moshi/issues/783
|
||||||
|
*/
|
||||||
|
@JsonClass(generateAdapter = true)
|
||||||
|
data class ClassInPackageThatLooksLikeAClass(val foo: String)
|
Reference in New Issue
Block a user