diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt index 8852716bc82..23eae6a5294 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt @@ -1008,7 +1008,12 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati invisibleAnnotations: List?, descriptorAnnotations: Annotations ): JCModifiers { + var seenOverride = false fun convertAndAdd(list: JavacList, annotation: AnnotationNode): JavacList { + if (annotation.desc == "Ljava/lang/Override;") { + if (seenOverride) return list // KT-34569: skip duplicate @Override annotations + seenOverride = true + } val annotationDescriptor = descriptorAnnotations.singleOrNull { checkIfAnnotationValueMatches(annotation, AnnotationValue(it)) } val annotationTree = convertAnnotation(annotation, packageFqName, annotationDescriptor) ?: return list return list.prepend(annotationTree) diff --git a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java index ec5aad38b98..a1ec1d72909 100644 --- a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java @@ -288,6 +288,11 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi runTest("plugins/kapt3/kapt3-compiler/testData/converter/kt28306.kt"); } + @TestMetadata("kt34569.kt") + public void testKt34569() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/kt34569.kt"); + } + @TestMetadata("lazyProperty.kt") public void testLazyProperty() throws Exception { runTest("plugins/kapt3/kapt3-compiler/testData/converter/lazyProperty.kt"); diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt34569.kt b/plugins/kapt3/kapt3-compiler/testData/converter/kt34569.kt new file mode 100644 index 00000000000..25b9209e5ce --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt34569.kt @@ -0,0 +1,4 @@ +class T : Runnable { + @Override + public override fun run() {} +} \ No newline at end of file diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt34569.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt34569.txt new file mode 100644 index 00000000000..10fbe967c0f --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt34569.txt @@ -0,0 +1,13 @@ +import java.lang.System; + +@kotlin.Metadata() +public final class T implements java.lang.Runnable { + + @java.lang.Override() + public void run() { + } + + public T() { + super(); + } +}