[FIR] Properly infer open modality for functions of expect interfaces

This commit is contained in:
Dmitriy Novozhilov
2021-06-02 10:46:06 +03:00
committed by teamcityserver
parent 3991383853
commit 18af4155b8
2 changed files with 3 additions and 2 deletions
@@ -484,7 +484,8 @@ abstract class AbstractFirStatusResolveTransformer(
if (needReplacePhase(simpleFunction)) {
simpleFunction.replaceResolvePhase(transformerPhase)
}
simpleFunction.transformStatus(this, statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false))
val resolvedStatus = statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)
simpleFunction.transformStatus(this, resolvedStatus)
calculateDeprecations(simpleFunction)
return transformDeclaration(simpleFunction, data) as FirStatement
}
@@ -158,7 +158,7 @@ class FirStatusResolver(
}
val modality = status.modality?.let {
if (it == Modality.OPEN && containingClass?.classKind == ClassKind.INTERFACE && !declaration.hasOwnBodyOrAccessorBody()) {
if (it == Modality.OPEN && containingClass?.classKind == ClassKind.INTERFACE && !(declaration.hasOwnBodyOrAccessorBody() || status.isExpect)) {
Modality.ABSTRACT
} else {
it