diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt index 0f76eff3432..ebbf2280759 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt @@ -134,14 +134,18 @@ class FirTypeIntersectionScope private constructor( private fun > chooseIntersectionOverrideModality( extractedOverridden: Collection> - ): Modality { + ): Modality? { var hasOpen = false var hasAbstract = false for ((member) in extractedOverridden) { when ((member.fir as FirMemberDeclaration).modality) { Modality.FINAL -> return Modality.FINAL - Modality.SEALED -> error("Members should not be sealed: $member") + Modality.SEALED -> { + // Members should not be sealed. But, that will be reported as WRONG_MODIFIER_TARGET, and here we shouldn't raise an + // internal error. Instead, let the intersection override have the default modality: null. + return null + } Modality.OPEN -> { hasOpen = true } @@ -258,7 +262,7 @@ class FirTypeIntersectionScope private constructor( private fun createIntersectionOverride( mostSpecific: FirNamedFunctionSymbol, overrides: Collection>, - newModality: Modality, + newModality: Modality?, newVisibility: Visibility, ): FirNamedFunctionSymbol { @@ -287,7 +291,7 @@ class FirTypeIntersectionScope private constructor( private fun createIntersectionOverride( mostSpecific: FirPropertySymbol, overrides: Collection>, - newModality: Modality, + newModality: Modality?, newVisibility: Visibility, ): FirPropertySymbol { val newSymbol = FirIntersectionOverridePropertySymbol(mostSpecific.callableId, overrides)