From bf4b83d1dc32575150e0940fb8fc8627aa4575b3 Mon Sep 17 00:00:00 2001 From: Trevor Jones Date: Mon, 1 May 2023 22:30:18 -0600 Subject: [PATCH] test case and possible fix for messaging when type resolution fails due to invalid syntax of a generic property (#1527) --- .../ksp/JsonClassSymbolProcessorProvider.kt | 4 ++-- .../ksp/JsonClassSymbolProcessorTest.kt | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) 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(