diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.fir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.fir.txt new file mode 100644 index 00000000000..5b56f018d5f --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.fir.txt @@ -0,0 +1,51 @@ +/** + * public final annotation class Anno : kotlin/Annotation { + * + * // signature: (LColor;)V + * public constructor(color: Color) + * + * // getter: color()LColor; + * public final val color: Color + * public final get + * + * // module name: main + * } + */ +@kotlin.Metadata() +@Anno(color = Color.InvalidFieldName) +@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) +public abstract @interface Anno { + + public abstract Color color(); +} + +//////////////////// + + +/** + * public final enum class Color : kotlin/Enum { + * + * // signature: (Ljava/lang/String;I)V + * private constructor() + * + * BLACK, + * + * WHI-TE, + * + * // module name: main + * + * // has Enum.entries + * } + */ +@kotlin.Metadata() +public enum Color { + /*public static final*/ BLACK /* = new Color() */; + + Color() { + } + + @org.jetbrains.annotations.NotNull() + public static kotlin.enums.EnumEntries getEntries() { + return null; + } +} diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.kt b/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.kt index d878b9db945..cf66b735754 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/invalidFieldName.kt @@ -1,4 +1,3 @@ -// FIR_BLOCKED: LC don't support illegal java identifiers enum class Color { BLACK, `WHI-TE` } @@ -6,5 +5,5 @@ enum class Color { @Anno(Color.`WHI-TE`) annotation class Anno(val color: Color) -// EXPECTED_ERROR: (kotlin:6:1) an enum annotation value must be an enum constant +// EXPECTED_ERROR: (kotlin:5:1) an enum annotation value must be an enum constant // EXPECTED_ERROR: (other:-1:-1) 'WHI-TE' is an invalid Java enum value name diff --git a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt index ec5f37c8fe8..6ae9b03c992 100644 --- a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt +++ b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parameterIndex import org.jetbrains.kotlin.resolve.calls.util.getCalleeExpressionIfAny import org.jetbrains.kotlin.utils.toMetadataVersion import org.jetbrains.kotlin.kapt3.base.KaptOptions +import org.jetbrains.kotlin.kapt3.base.javac.kaptError import org.jetbrains.kotlin.kapt3.stubs.MembersPositionComparator import org.jetbrains.kotlin.psi.psiUtil.children import org.jetbrains.kotlin.utils.Printer @@ -466,7 +467,9 @@ private class StubGenerator( private fun convertDotQualifiedExpression(dotQualifiedExpression: KtDotQualifiedExpression): String? { val qualifier = dotQualifiedExpression.lastChild as? KtNameReferenceExpression ?: return null - val name = qualifier.text.takeIf { isValidIdentifier(it) } ?: "InvalidFieldName" + val name = qualifier.text.takeIf { isValidIdentifier(it) } ?: "InvalidFieldName".also { + onError("'${qualifier.text.removeSurrounding("`")}' is an invalid Java enum value name") + } val lhs = when (val left = dotQualifiedExpression.firstChild) { is KtNameReferenceExpression -> left.getReferencedName() is KtDotQualifiedExpression -> convertDotQualifiedExpression(left) ?: return null diff --git a/plugins/kapt4/test/org/jetbrains/kotlin/kapt4/Kapt4Facade.kt b/plugins/kapt4/test/org/jetbrains/kotlin/kapt4/Kapt4Facade.kt index 430e96781bd..1cd5c039ecb 100644 --- a/plugins/kapt4/test/org/jetbrains/kotlin/kapt4/Kapt4Facade.kt +++ b/plugins/kapt4/test/org/jetbrains/kotlin/kapt4/Kapt4Facade.kt @@ -85,11 +85,7 @@ private fun run( WriterBackedKaptLogger(isVerbose = false), ) val onError = { message: String -> - if (context.options[KaptFlag.STRICT]) { - context.reportKaptError(*message.split("\n").toTypedArray()) - } else { - context.logger.warn(message) - } + context.reportKaptError(*message.split("\n").toTypedArray()) } return context to generateStubs(module, files, options, onError, metadataRenderer = { renderMetadata(it) }) }