Use actual implementation instead of inherited one in -Xjvm-default diagnostics

This commit is contained in:
Mikhael Bogdanov
2021-03-08 16:23:16 +01:00
committed by Space
parent 71c134e54f
commit 3568eba1b2
3 changed files with 7 additions and 6 deletions
@@ -117,7 +117,7 @@ class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: P
performSpecializationCheck
)
) {
checkPossibleClashMember(inheritedMember, jvmDefaultMode, context, declaration)
checkPossibleClashMember(inheritedMember, actualImplementation, jvmDefaultMode, context, declaration)
}
} else if (actualImplementation is PropertyDescriptor && inheritedMember is PropertyDescriptor) {
val getterImpl = actualImplementation.getter
@@ -146,7 +146,7 @@ class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: P
}
}
checkPossibleClashMember(inheritedMember, jvmDefaultMode, context, declaration)
checkPossibleClashMember(inheritedMember, actualImplementation, jvmDefaultMode, context, declaration)
}
}
}
@@ -179,6 +179,7 @@ class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: P
private fun checkPossibleClashMember(
inheritedFun: CallableMemberDescriptor,
actualImplementation: CallableMemberDescriptor,
jvmDefaultMode: JvmDefaultMode,
context: DeclarationCheckerContext,
declaration: KtDeclaration
@@ -188,7 +189,7 @@ class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: P
context.trace.report(
ErrorsJvm.EXPLICIT_OVERRIDE_REQUIRED_IN_MIXED_MODE.on(
declaration,
getDirectMember(inheritedFun),
getDirectMember(actualImplementation),
getDirectMember(clashMember),
jvmDefaultMode.description
)