FIR: don't allow SEALED callable modality anymore
This commit is contained in:
committed by
TeamCityServer
parent
67d1c35f19
commit
4608ca15eb
+5
-5
@@ -397,7 +397,7 @@ class DeclarationsConverter(
|
||||
withCapturedTypeParameters {
|
||||
val status = FirDeclarationStatusImpl(
|
||||
if (isLocal) Visibilities.Local else modifiers.getVisibility(),
|
||||
modifiers.getModality()
|
||||
modifiers.getModality(isClassOrObject = true)
|
||||
).apply {
|
||||
isExpect = modifiers.hasExpect()
|
||||
isActual = modifiers.hasActual()
|
||||
@@ -1070,7 +1070,7 @@ class DeclarationsConverter(
|
||||
|
||||
fun defaultAccessorStatus() =
|
||||
// Downward propagation of `inline` and `external` modifiers (from property to its accessors)
|
||||
FirDeclarationStatusImpl(propertyVisibility, modifiers.getModality()).apply {
|
||||
FirDeclarationStatusImpl(propertyVisibility, modifiers.getModality(isClassOrObject = false)).apply {
|
||||
isInline = modifiers.hasInline()
|
||||
isExternal = modifiers.hasExternal()
|
||||
}
|
||||
@@ -1097,7 +1097,7 @@ class DeclarationsConverter(
|
||||
// Upward propagation of `inline` and `external` modifiers (from accessors to property)
|
||||
// Note that, depending on `var` or `val`, checking setter's modifiers should be careful: for `val`, setter doesn't
|
||||
// exist (null); for `var`, the retrieval of the specific modifier is supposed to be `true`
|
||||
status = FirDeclarationStatusImpl(propertyVisibility, modifiers.getModality()).apply {
|
||||
status = FirDeclarationStatusImpl(propertyVisibility, modifiers.getModality(isClassOrObject = false)).apply {
|
||||
isExpect = modifiers.hasExpect() || classWrapper?.hasExpect() == true
|
||||
isActual = modifiers.hasActual()
|
||||
isOverride = modifiers.hasOverride()
|
||||
@@ -1218,7 +1218,7 @@ class DeclarationsConverter(
|
||||
}
|
||||
val status =
|
||||
// Downward propagation of `inline` and `external` modifiers (from property to its accessors)
|
||||
FirDeclarationStatusImpl(accessorVisibility, modifiers.getModality()).apply {
|
||||
FirDeclarationStatusImpl(accessorVisibility, modifiers.getModality(isClassOrObject = false)).apply {
|
||||
isInline = propertyModifiers.hasInline() || modifiers.hasInline()
|
||||
isExternal = propertyModifiers.hasExternal() || modifiers.hasExternal()
|
||||
}
|
||||
@@ -1388,7 +1388,7 @@ class DeclarationsConverter(
|
||||
name = functionName
|
||||
status = FirDeclarationStatusImpl(
|
||||
if (isLocal) Visibilities.Local else modifiers.getVisibility(),
|
||||
modifiers.getModality()
|
||||
modifiers.getModality(isClassOrObject = false)
|
||||
).apply {
|
||||
isExpect = modifiers.hasExpect() || classWrapper?.hasExpect() == true
|
||||
isActual = modifiers.hasActual()
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ class ValueParameter(
|
||||
symbol = FirPropertySymbol(callableId)
|
||||
dispatchReceiverType = currentDispatchReceiver
|
||||
isLocal = false
|
||||
status = FirDeclarationStatusImpl(modifiers.getVisibility(), modifiers.getModality()).apply {
|
||||
status = FirDeclarationStatusImpl(modifiers.getVisibility(), modifiers.getModality(isClassOrObject = false)).apply {
|
||||
this.isExpect = isExpect
|
||||
isActual = modifiers.hasActual()
|
||||
isOverride = modifiers.hasOverride()
|
||||
|
||||
+2
-2
@@ -146,10 +146,10 @@ class Modifier(
|
||||
}
|
||||
}
|
||||
|
||||
fun getModality(): Modality? {
|
||||
fun getModality(isClassOrObject: Boolean): Modality? {
|
||||
return when {
|
||||
inheritanceModifiers.contains(InheritanceModifier.FINAL) -> Modality.FINAL
|
||||
inheritanceModifiers.contains(InheritanceModifier.SEALED) -> Modality.SEALED
|
||||
inheritanceModifiers.contains(InheritanceModifier.SEALED) -> if (isClassOrObject) Modality.SEALED else null
|
||||
inheritanceModifiers.contains(InheritanceModifier.ABSTRACT) -> Modality.ABSTRACT
|
||||
inheritanceModifiers.contains(InheritanceModifier.OPEN) -> Modality.OPEN
|
||||
else -> null
|
||||
|
||||
@@ -148,7 +148,7 @@ open class RawFirBuilder(
|
||||
when {
|
||||
this == null -> null
|
||||
hasModifier(FINAL_KEYWORD) -> Modality.FINAL
|
||||
hasModifier(SEALED_KEYWORD) -> Modality.SEALED
|
||||
hasModifier(SEALED_KEYWORD) -> if (this@modality is KtClassOrObject) Modality.SEALED else null
|
||||
hasModifier(ABSTRACT_KEYWORD) -> Modality.ABSTRACT
|
||||
else -> if (hasModifier(OPEN_KEYWORD)) Modality.OPEN else null
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ interface B {
|
||||
abstract var bar: Unit
|
||||
}
|
||||
|
||||
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>interface C<!> : A, B
|
||||
interface C : A, B
|
||||
|
||||
abstract class D(sealed var x: Int) {
|
||||
abstract var y: Unit
|
||||
|
||||
Reference in New Issue
Block a user