diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/duplicateJvmSignatureUtil.kt b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/duplicateJvmSignatureUtil.kt index 77a68c51909..5f07845271a 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/duplicateJvmSignatureUtil.kt +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/duplicateJvmSignatureUtil.kt @@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.diagnostics.Errors.* import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory.* import org.jetbrains.jet.lang.psi.JetParameter import org.jetbrains.jet.lang.psi.JetClass +import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostics): Diagnostics? { fun doGetDiagnostics(): Diagnostics? { @@ -72,7 +73,7 @@ public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Dia class FilteredJvmDiagnostics(val jvmDiagnostics: Diagnostics, val otherDiagnostics: Diagnostics) : Diagnostics by jvmDiagnostics { private fun alreadyReported(psiElement: PsiElement): Boolean { - return otherDiagnostics.forElement(psiElement).any { it.getFactory() in setOf(CONFLICTING_OVERLOADS, REDECLARATION) } + return otherDiagnostics.forElement(psiElement).any { it.getFactory() in setOf>(CONFLICTING_OVERLOADS, REDECLARATION, NOTHING_TO_OVERRIDE) } || psiElement is JetPropertyAccessor && alreadyReported(psiElement.getParent()!!) } diff --git a/compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides/overridesNothing.kt b/compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides/overridesNothing.kt new file mode 100644 index 00000000000..f9ddf9704d2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides/overridesNothing.kt @@ -0,0 +1,7 @@ +trait B { + fun getX() = 1 +} + +class C : B { + override val x = 1 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/override/Generics.kt b/compiler/testData/diagnostics/tests/override/Generics.kt index dd17aedf110..5dbff912acf 100644 --- a/compiler/testData/diagnostics/tests/override/Generics.kt +++ b/compiler/testData/diagnostics/tests/override/Generics.kt @@ -42,7 +42,7 @@ abstract class MyAbstractClass1 : MyTrait, MyAbstractClass() { class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} class MyIllegalGenericClass2(r : R) : MyTrait, MyAbstractClass() { - override fun foo(r: R) = r + override fun foo(r: R) = r override val pr : R = r } class MyIllegalClass1 : MyTrait, MyAbstractClass() {} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index d726279681c..eafe1726bd4 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -2593,6 +2593,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides/genericClassFunction.kt"); } + @TestMetadata("overridesNothing.kt") + public void testOverridesNothing() throws Exception { + doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides/overridesNothing.kt"); + } + @TestMetadata("phantomClashWithSamAdapter.kt") public void testPhantomClashWithSamAdapter() throws Exception { doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides/phantomClashWithSamAdapter.kt"); diff --git a/idea/testData/checker/OverridesAndGenerics.kt b/idea/testData/checker/OverridesAndGenerics.kt index 92968f88434..009961e6adb 100644 --- a/idea/testData/checker/OverridesAndGenerics.kt +++ b/idea/testData/checker/OverridesAndGenerics.kt @@ -25,7 +25,7 @@ class MyIllegalGenericClass1 : MyTrait, MyAbstractClass() {} class MyIllegalGenericClass2 : MyTrait, MyAbstractClass() { - override fun foo(r: R) = r + override fun foo(r: R) = r } class MyIllegalClass1 : MyTrait, MyAbstractClass() {}