test case and possible fix for messaging when type resolution fails due to invalid syntax of a generic property (#1527)

This commit is contained in:
Trevor Jones
2023-05-01 22:30:18 -06:00
committed by GitHub
parent 3d9d6042b3
commit bf4b83d1dc
2 changed files with 20 additions and 2 deletions

View File

@@ -87,9 +87,9 @@ private class JsonClassSymbolProcessor(
if (!jsonClassAnnotation.generateAdapter) continue if (!jsonClassAnnotation.generateAdapter) continue
val originatingFile = type.containingFile!!
val adapterGenerator = adapterGenerator(logger, resolver, type) ?: return emptyList()
try { try {
val originatingFile = type.containingFile!!
val adapterGenerator = adapterGenerator(logger, resolver, type) ?: return emptyList()
val preparedAdapter = adapterGenerator val preparedAdapter = adapterGenerator
.prepare(generateProguardRules) { spec -> .prepare(generateProguardRules) { spec ->
spec.toBuilder() spec.toBuilder()

View File

@@ -538,6 +538,24 @@ class JsonClassSymbolProcessorTest {
assertThat(result.messages).contains("JsonQualifier @UpperCase must have RUNTIME retention") assertThat(result.messages).contains("JsonQualifier @UpperCase must have RUNTIME retention")
} }
@Test
fun invalidGenericSyntaxErrorMessaging() {
val result = compile(
kotlin(
"source.kt",
"""
package test
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
data class ElementEnvelope(val elements: List)
""",
),
)
assertThat(result.exitCode).isEqualTo(KotlinCompilation.ExitCode.COMPILATION_ERROR)
assertThat(result.messages).contains("Error preparing ElementEnvelope")
}
@Test @Test
fun `TypeAliases with the same backing type should share the same adapter`() { fun `TypeAliases with the same backing type should share the same adapter`() {
val result = compile( val result = compile(