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 b385a337d94..882fd14c1d3 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 @@ -63,7 +63,7 @@ public fun getJvmSignatureDiagnostics(element: PsiElement): Diagnostics? { val filtered = arrayListOf() conflicting.groupBy { - CONFLICTING_JVM_DECLARATIONS.cast(it).getA().signature + CONFLICTING_JVM_DECLARATIONS.cast(it).getA().signature.name }.forEach { val diagnostics = it.getValue() if (diagnostics.size <= 1) { @@ -89,7 +89,11 @@ public fun getJvmSignatureDiagnostics(element: PsiElement): Diagnostics? { } private fun ConflictingJvmDeclarationsData.higherThan(other: ConflictingJvmDeclarationsData): Boolean { - return this.classOrigin.originKind == PACKAGE_FACADE && other.classOrigin.originKind == PACKAGE_PART + return when (other.classOrigin.originKind) { + PACKAGE_PART -> this.classOrigin.originKind == PACKAGE_FACADE + TRAIT_IMPL -> this.classOrigin.originKind != TRAIT_IMPL + else -> false + } } private fun getDiagnosticsForPackage(file: JetFile): Diagnostics? {