[FIR] Properly infer open modality for functions of expect interfaces
This commit is contained in:
committed by
teamcityserver
parent
3991383853
commit
18af4155b8
+2
-1
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user