mirror of
https://github.com/fankes/moshi.git
synced 2025-10-20 00:19:21 +08:00
Fix a crash when processing a parameter annotated with an annotation that placed in annotation package (#1287)
* Update KotlinPoet to 1.7.2 * Fix a Java NPE crash when processing a parameter annotated with an annotation that placed in annotation package This problem happens with KotlinPoet 1.7.x. From KotlinPoet 1.7.x, `TypeName.toString()` is escaped with backquotes if the package name contains keywords. So NPE will be thrown if an annotation is placed in `annotation` package because `elements.getTypeElement(it.typeName.toString())` returns `null`. * Reformat imports * Use rawType().canonicalName instead of toString() * Fix test case * Require getTypeElement * Exclude com.google.guava from shadowJar * Move a test case of processing a qualifier placed in `annotation` package * Use checkNull instead
This commit is contained in:
@@ -60,9 +60,11 @@ dependencies {
|
||||
exclude(group = "org.jetbrains.kotlin")
|
||||
exclude(group = "com.squareup", module = "kotlinpoet")
|
||||
}
|
||||
api(Dependencies.KotlinPoet.elementsClassInspector)
|
||||
shade(Dependencies.KotlinPoet.elementsClassInspector) {
|
||||
exclude(group = "org.jetbrains.kotlin")
|
||||
exclude(group = "com.squareup", module = "kotlinpoet")
|
||||
exclude(group = "com.google.guava")
|
||||
}
|
||||
api(Dependencies.asm)
|
||||
|
||||
|
@@ -488,7 +488,10 @@ internal fun TargetProperty.generator(
|
||||
private fun List<AnnotationSpec>?.qualifiers(elements: Elements): Set<AnnotationSpec> {
|
||||
if (this == null) return setOf()
|
||||
return filterTo(mutableSetOf()) {
|
||||
elements.getTypeElement(it.typeName.toString()).getAnnotation(JSON_QUALIFIER) != null
|
||||
val typeElement = checkNotNull(elements.getTypeElement(it.typeName.rawType().canonicalName)) {
|
||||
"Could not get the type element of $it"
|
||||
}
|
||||
typeElement.getAnnotation(JSON_QUALIFIER) != null
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user