[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)) { if (needReplacePhase(simpleFunction)) {
simpleFunction.replaceResolvePhase(transformerPhase) 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) calculateDeprecations(simpleFunction)
return transformDeclaration(simpleFunction, data) as FirStatement return transformDeclaration(simpleFunction, data) as FirStatement
} }
@@ -158,7 +158,7 @@ class FirStatusResolver(
} }
val modality = status.modality?.let { 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 Modality.ABSTRACT
} else { } else {
it it