diff --git a/moshi-kotlin-codegen/src/main/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorProvider.kt b/moshi-kotlin-codegen/src/main/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorProvider.kt index c1f23ed..3df24d6 100644 --- a/moshi-kotlin-codegen/src/main/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorProvider.kt +++ b/moshi-kotlin-codegen/src/main/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorProvider.kt @@ -87,9 +87,9 @@ private class JsonClassSymbolProcessor( if (!jsonClassAnnotation.generateAdapter) continue - val originatingFile = type.containingFile!! - val adapterGenerator = adapterGenerator(logger, resolver, type) ?: return emptyList() try { + val originatingFile = type.containingFile!! + val adapterGenerator = adapterGenerator(logger, resolver, type) ?: return emptyList() val preparedAdapter = adapterGenerator .prepare(generateProguardRules) { spec -> spec.toBuilder() diff --git a/moshi-kotlin-codegen/src/test/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorTest.kt b/moshi-kotlin-codegen/src/test/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorTest.kt index 6074f70..ef3d298 100644 --- a/moshi-kotlin-codegen/src/test/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorTest.kt +++ b/moshi-kotlin-codegen/src/test/java/com/squareup/moshi/kotlin/codegen/ksp/JsonClassSymbolProcessorTest.kt @@ -538,6 +538,24 @@ class JsonClassSymbolProcessorTest { 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 fun `TypeAliases with the same backing type should share the same adapter`() { val result = compile(