FIR: make declarations marked with 'override' implicitly open

#KT-52236 Fixed
This commit is contained in:
Steven Schäfer
2022-11-18 16:13:01 +01:00
committed by Space Team
parent 9c1a68fcec
commit 6af616d3c3
205 changed files with 638 additions and 10616 deletions
@@ -13,7 +13,7 @@ KtFunctionSymbol:
isOverride: true
isStatic: false
isSuspend: false
modality: FINAL
modality: OPEN
name: run
origin: SOURCE
receiverParameter: null
@@ -41,7 +41,7 @@ KtFunctionSymbol:
isOverride: true
isStatic: false
isSuspend: false
modality: FINAL
modality: OPEN
name: foo
origin: SOURCE
receiverParameter: null
@@ -84,7 +84,7 @@ KtFunctionSymbol:
isOverride: true
isStatic: false
isSuspend: false
modality: FINAL
modality: OPEN
name: foo
origin: SOURCE
receiverParameter: null
@@ -133,7 +133,7 @@ KtKotlinPropertySymbol:
isOverride: true
isStatic: false
isVal: true
modality: FINAL
modality: OPEN
name: i
origin: SOURCE
receiverParameter: null
@@ -180,7 +180,7 @@ KtFunctionSymbol:
isOverride: true
isStatic: false
isSuspend: false
modality: FINAL
modality: OPEN
name: foo
origin: SOURCE
receiverParameter: null
@@ -208,7 +208,7 @@ KtFunctionSymbol:
isOverride: true
isStatic: false
isSuspend: false
modality: FINAL
modality: OPEN
name: foo
origin: SOURCE
receiverParameter: null
@@ -124,7 +124,7 @@ KtKotlinPropertySymbol:
isOverride: true
isStatic: false
isVal: true
modality: FINAL
modality: OPEN
name: exitAnimation
origin: SOURCE
receiverParameter: null
@@ -14,7 +14,7 @@ FILE: propertyWithSetter.kt
super<R|Foo|>()
}
public final override [BODY_RESOLVE] var id: R|kotlin/Int| = Int(1)
public open override [BODY_RESOLVE] var id: R|kotlin/Int| = Int(1)
public [BODY_RESOLVE] get(): R|kotlin/Int|
public [BODY_RESOLVE] set([BODY_RESOLVE] value: R|kotlin/Int|): R|kotlin/Unit|
@@ -382,11 +382,11 @@ FILE: delegates.kt
super<R|kotlin/Any|>()
}
public final override operator [RAW_FIR] fun getValue([RAW_FIR] thisRef: R|kotlin/Any?|, [RAW_FIR] property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| {
public open override operator [RAW_FIR] fun getValue([RAW_FIR] thisRef: R|kotlin/Any?|, [RAW_FIR] property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| {
^getValue Int(1)
}
public final override operator [RAW_FIR] fun setValue([RAW_FIR] thisRef: R|kotlin/Any?|, [RAW_FIR] property: R|kotlin/reflect/KProperty<*>|, [RAW_FIR] value: R|kotlin/Int|): R|kotlin/Unit| {
public open override operator [RAW_FIR] fun setValue([RAW_FIR] thisRef: R|kotlin/Any?|, [RAW_FIR] property: R|kotlin/reflect/KProperty<*>|, [RAW_FIR] value: R|kotlin/Int|): R|kotlin/Unit| {
}
}
@@ -430,11 +430,11 @@ FILE: delegates.kt
super<R|kotlin/Any|>()
}
public final override operator [BODY_RESOLVE] fun getValue([BODY_RESOLVE] thisRef: R|kotlin/Any?|, [BODY_RESOLVE] property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| {
public open override operator [BODY_RESOLVE] fun getValue([BODY_RESOLVE] thisRef: R|kotlin/Any?|, [BODY_RESOLVE] property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| {
^getValue Int(1)
}
public final override operator [BODY_RESOLVE] fun setValue([BODY_RESOLVE] thisRef: R|kotlin/Any?|, [BODY_RESOLVE] property: R|kotlin/reflect/KProperty<*>|, [BODY_RESOLVE] value: R|kotlin/Int|): R|kotlin/Unit| {
public open override operator [BODY_RESOLVE] fun setValue([BODY_RESOLVE] thisRef: R|kotlin/Any?|, [BODY_RESOLVE] property: R|kotlin/reflect/KProperty<*>|, [BODY_RESOLVE] value: R|kotlin/Int|): R|kotlin/Unit| {
}
}
@@ -150,7 +150,7 @@ FILE: anonymousObjectInInvalidPosition.kt
super<R|kotlin/Any|>()
}
public final override [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
public open override [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
}
}
@@ -168,7 +168,7 @@ FILE: anonymousObjectInInvalidPosition.kt
super<R|kotlin/Any|>()
}
public final override [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
public open override [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
}
}
@@ -1,3 +1,3 @@
public final override [BODY_RESOLVE] fun baseMember(): R|kotlin/Int| {
public open override [BODY_RESOLVE] fun baseMember(): R|kotlin/Int| {
^baseMember Int(3)
}
@@ -197,8 +197,9 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC
val nonFinalFunctionsFromAny = classOrObjectSymbol.getMemberScope()
.getCallableSymbols { name -> name.isFromAny }
.filterIsInstance<KtFunctionSymbol>()
.filterNot { it.modality == Modality.FINAL }
.filter { actuallyComesFromAny(it) }
.filterNot {
it.modality == Modality.FINAL || (it.getContainingSymbol() as? KtNamedClassOrObjectSymbol)?.modality == Modality.FINAL
}.filter { actuallyComesFromAny(it) }
val functionsFromAnyByName = nonFinalFunctionsFromAny.associateBy { it.name }
@@ -4,7 +4,7 @@ FILE: main.kt
super<R|A|>()
}
protected final override fun foo(s: R|kotlin/String|): R|kotlin/Any?| {
protected open override fun foo(s: R|kotlin/String|): R|kotlin/Any?| {
^foo Null(null)
}
@@ -12,10 +12,10 @@ FILE: defaultFromOverrides.kt
super<R|kotlin/Any|>()
}
public final override fun foo(x: R|kotlin/Int|): R|kotlin/Unit| {
public open override fun foo(x: R|kotlin/Int|): R|kotlin/Unit| {
}
public final override fun bar(x: R|kotlin/String|, y: R|kotlin/Int|): R|kotlin/Unit| {
public open override fun bar(x: R|kotlin/String|, y: R|kotlin/Int|): R|kotlin/Unit| {
}
}
@@ -20,11 +20,11 @@ FILE: superAny.kt
super<R|B|>()
}
public final override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
public open override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
^equals this@R|/C|.super<R|B|>.R|/B.equals|(R|<local>/other|)
}
public final override fun hashCode(): R|kotlin/Int| {
public open override fun hashCode(): R|kotlin/Int| {
^hashCode this@R|/C|.super<R|B|>.R|/B.hashCode|()
}
@@ -8,7 +8,7 @@ FILE: delegatedSuperType.kt
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Unit| {
public open override fun foo(): R|kotlin/Unit| {
}
}
@@ -35,7 +35,7 @@ FILE: abstractSuperCall.kt
super<R|A|>()
}
public final override fun f(): R|kotlin/Unit| {
public open override fun f(): R|kotlin/Unit| {
}
public final fun g(): R|kotlin/Unit| {
@@ -22,15 +22,15 @@ FILE: abstractSuperCallInPresenseOfNonAbstractMethodInParent.kt
super<R|B|>()
}
public final override fun toString(): R|kotlin/String| {
public open override fun toString(): R|kotlin/String| {
^toString this@R|/A|.super<R|B|>.R|kotlin/Any.toString|()
}
public final override fun foo(): R|kotlin/String| {
public open override fun foo(): R|kotlin/String| {
^foo this@R|/A|.super<R|B|>.R|/B.foo|()
}
public final override fun bar(): R|kotlin/String| {
public open override fun bar(): R|kotlin/String| {
^bar this@R|/A|.super<R|IWithToString|>.R|/IWithToString.bar|()
}
@@ -30,7 +30,7 @@ FILE: conflictingOverloads.kt
super<R|A|>()
}
public final override fun rest(s: R|kotlin/String|): R|kotlin/Unit| {
public open override fun rest(s: R|kotlin/String|): R|kotlin/Unit| {
}
public final fun rest(s: R|kotlin/String|): R|kotlin/Unit| {
@@ -39,7 +39,7 @@ FILE: conflictingOverloads.kt
public final fun rest(l: R|kotlin/Long|): R|kotlin/Unit| {
}
public final override val u: R|kotlin/Int| = Int(310)
public open override val u: R|kotlin/Int| = Int(310)
public get(): R|kotlin/Int|
}
@@ -24,7 +24,7 @@ FILE: propertyTypeMismatchOnOverride.kt
super<R|A|>()
}
public final override var test: R|kotlin/String| = String(Test)
public open override var test: R|kotlin/String| = String(Test)
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -47,7 +47,7 @@ FILE: propertyTypeMismatchOnOverride.kt
public final val value: R|T| = R|<local>/value|
public get(): R|T|
public final override var test: R|T| = this@R|/E|.R|/E.value|
public open override var test: R|T| = this@R|/E|.R|/E.value|
public get(): R|T|
public set(value: R|T|): R|kotlin/Unit|
@@ -73,7 +73,7 @@ FILE: propertyTypeMismatchOnOverride.kt
public final val balue: R|E| = R|<local>/balue|
public get(): R|E|
public final override var rest: R|E| = this@R|/G|.R|/G.balue|
public open override var rest: R|E| = this@R|/G|.R|/G.balue|
public get(): R|E|
public set(value: R|E|): R|kotlin/Unit|
@@ -86,7 +86,7 @@ FILE: propertyTypeMismatchOnOverride.kt
public final val balue: R|E| = R|<local>/balue|
public get(): R|E|
public final override var rest: R|E| = this@R|/H|.R|/H.balue|
public open override var rest: R|E| = this@R|/H|.R|/H.balue|
public get(): R|E|
public set(value: R|E|): R|kotlin/Unit|
@@ -99,7 +99,7 @@ FILE: propertyTypeMismatchOnOverride.kt
public final val balue: R|E| = R|<local>/balue|
public get(): R|E|
public final override var rest: R|E| = this@R|/M|.R|/M.balue|
public open override var rest: R|E| = this@R|/M|.R|/M.balue|
public get(): R|E|
public set(value: R|E|): R|kotlin/Unit|
@@ -28,7 +28,7 @@ FILE: returnTypeMismatchOnOverride.kt
super<R|A|>()
}
public final override fun test(): R|kotlin/String| {
public open override fun test(): R|kotlin/String| {
^test String(Test)
}
@@ -51,7 +51,7 @@ FILE: returnTypeMismatchOnOverride.kt
public final val value: R|T| = R|<local>/value|
public get(): R|T|
public final override fun test(): R|T| {
public open override fun test(): R|T| {
^test this@R|/E|.R|/E.value|
}
@@ -77,7 +77,7 @@ FILE: returnTypeMismatchOnOverride.kt
public final val balue: R|E| = R|<local>/balue|
public get(): R|E|
public final override fun rest(): R|E| {
public open override fun rest(): R|E| {
^rest this@R|/G|.R|/G.balue|
}
@@ -90,7 +90,7 @@ FILE: returnTypeMismatchOnOverride.kt
public final val balue: R|E| = R|<local>/balue|
public get(): R|E|
public final override fun rest(): R|E| {
public open override fun rest(): R|E| {
^rest this@R|/H|.R|/H.balue|
}
@@ -103,7 +103,7 @@ FILE: returnTypeMismatchOnOverride.kt
public final val balue: R|E| = R|<local>/balue|
public get(): R|E|
public final override fun rest(): R|E| {
public open override fun rest(): R|E| {
^rest this@R|/M|.R|/M.balue|
}
@@ -19,7 +19,7 @@ FILE: superCallWithDelegation.kt
super<R|B|>(R|<local>/a|)
}
public final override fun foo(): R|kotlin/Unit| {
public open override fun foo(): R|kotlin/Unit| {
this@R|/C|.super<R|B|>.R|/A.foo|()
}
+4 -4
View File
@@ -26,7 +26,7 @@ FILE: enum.kt
super<R|SomeEnum|>(Q|O1|)
}
public final override fun check(y: R|Some|): R|kotlin/Boolean| {
public open override fun check(y: R|Some|): R|kotlin/Boolean| {
^check Boolean(true)
}
@@ -37,7 +37,7 @@ FILE: enum.kt
super<R|SomeEnum|>(Q|O2|)
}
public final override fun check(y: R|Some|): R|kotlin/Boolean| {
public open override fun check(y: R|Some|): R|kotlin/Boolean| {
^check ==(R|<local>/y|, Q|O2|)
}
@@ -81,11 +81,11 @@ FILE: enum.kt
super<R|EnumClass|>()
}
public final override fun foo(): R|kotlin/Int| {
public open override fun foo(): R|kotlin/Int| {
^foo Int(1)
}
public final override val bar: R|kotlin/String| = String(a)
public open override val bar: R|kotlin/String| = String(a)
public get(): R|kotlin/String|
}
@@ -37,7 +37,7 @@ FILE: CallBasedInExpressionGenerator.kt
private final val isInverted: R|kotlin/Boolean| = ==(R|<local>/operatorReference|.<Unresolved name: getReferencedNameElementType>#(), <Unresolved name: KtTokens>#.<Unresolved name: NOT_IN>#)
private get(): R|kotlin/Boolean|
public final override fun generate(argument: R|org/jetbrains/kotlin/codegen/range/inExpression/StackValue|): R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue| {
public open override fun generate(argument: R|org/jetbrains/kotlin/codegen/range/inExpression/StackValue|): R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue| {
^generate this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.gen|(R|<local>/argument|).R|kotlin/let|<R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|, R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|>(<L> = let@fun <anonymous>(it: R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|): R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue| <inline=Inline, kind=EXACTLY_ONCE> {
^ when () {
this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.isInverted| -> {
@@ -58,12 +58,12 @@ FILE: CallBasedInExpressionGenerator.kt
super<R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|>(R|<local>/argument|, Null(null), R|<local>/argument|.<Unresolved name: type>#, <Unresolved name: Opcodes>#.<Unresolved name: IFEQ>#)
}
public final override fun putSelector(type: R|org/jetbrains/kotlin/codegen/range/inExpression/Type|, kotlinType: R|org/jetbrains/kotlin/codegen/range/inExpression/KotlinType?|, v: R|org/jetbrains/kotlin/codegen/range/inExpression/InstructionAdapter|): R|kotlin/Unit| {
public open override fun putSelector(type: R|org/jetbrains/kotlin/codegen/range/inExpression/Type|, kotlinType: R|org/jetbrains/kotlin/codegen/range/inExpression/KotlinType?|, v: R|org/jetbrains/kotlin/codegen/range/inExpression/InstructionAdapter|): R|kotlin/Unit| {
this@R|/<anonymous>|.R|/<anonymous>.invokeFunction|(R|<local>/v|)
<Unresolved name: coerceTo>#(R|<local>/type|, R|<local>/kotlinType|, R|<local>/v|)
}
public final override fun condJump(jumpLabel: R|org/jetbrains/kotlin/codegen/range/inExpression/Label|, v: R|org/jetbrains/kotlin/codegen/range/inExpression/InstructionAdapter|, jumpIfFalse: R|kotlin/Boolean|): R|kotlin/Unit| {
public open override fun condJump(jumpLabel: R|org/jetbrains/kotlin/codegen/range/inExpression/Label|, v: R|org/jetbrains/kotlin/codegen/range/inExpression/InstructionAdapter|, jumpIfFalse: R|kotlin/Boolean|): R|kotlin/Unit| {
this@R|/<anonymous>|.R|/<anonymous>.invokeFunction|(R|<local>/v|)
R|<local>/v|.<Unresolved name: visitJumpInsn>#(when () {
R|<local>/jumpIfFalse| -> {
@@ -4,7 +4,7 @@ FILE: test.kt
super<R|Decorator<LookupElement>|>()
}
public final override fun getLookupString(): R|kotlin/String| {
public open override fun getLookupString(): R|kotlin/String| {
^getLookupString this@R|/MyDecorator|.R|/Decorator.delegate|.R|/LookupElement.lookupString|
}
@@ -15,7 +15,7 @@ FILE: genericPropertyAccess.kt
super<R|Base<T>|>(R|<local>/x|)
}
public final override fun foo(): R|T| {
public open override fun foo(): R|T| {
^foo this@R|/Derived|.R|SubstitutionOverride</Derived.x: R|T|>|
}
@@ -13,7 +13,7 @@ FILE: foo.kt
^bar this@R|/<anonymous>|.R|/<anonymous>.result|.R|kotlin/Boolean.not|()
}
public final override fun result(): R|kotlin/Boolean| {
public open override fun result(): R|kotlin/Boolean| {
^result this@R|/<anonymous>|.R|/<anonymous>.result|
}
@@ -4,7 +4,7 @@ FILE: Derived.kt
super<R|Base|>()
}
public final override fun getSomething(): R|kotlin/String| {
public open override fun getSomething(): R|kotlin/String| {
^getSomething String(42)
}
@@ -100,7 +100,7 @@ FILE: protectedVisibility.kt
super<R|Generic<kotlin/Int>|>(Int(1))
}
protected final override fun foo(): R|kotlin/Int| {
protected open override fun foo(): R|kotlin/Int| {
^foo this@R|/DerivedGeneric|.super<R|Generic<kotlin/Int>|>.R|SubstitutionOverride</Generic.foo: R|kotlin/Int|>|()
}
@@ -8,7 +8,7 @@ FILE: User.kt
^foo this@R|/User|.R|/User.text|
}
public final override fun getText(): R|kotlin/String| {
public open override fun getText(): R|kotlin/String| {
^getText String()
}
@@ -49,10 +49,10 @@ FILE: RedundantExplicitTypeChecker.kt
super<R|kotlin/Any|>()
}
public final override val x: R|kotlin/Int| = R|<local>/x|
public open override val x: R|kotlin/Int| = R|<local>/x|
public get(): R|kotlin/Int|
public final override val y: R|kotlin/Int| = R|<local>/y|
public open override val y: R|kotlin/Int| = R|<local>/y|
public get(): R|kotlin/Int|
}
@@ -14,7 +14,7 @@ FILE: RedundantVisibilityDueToOverride.kt
super<R|A|>()
}
public final override var attribute: R|kotlin/String| = this@R|/C1|.super<R|A|>.R|/A.attribute|
public open override var attribute: R|kotlin/String| = this@R|/C1|.super<R|A|>.R|/A.attribute|
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -34,7 +34,7 @@ FILE: RedundantVisibilityDueToOverride.kt
super<R|B2|>()
}
public final override var attribute: R|kotlin/String| = this@R|/C2|.super<R|B2|>.R|/B2.attribute|
public open override var attribute: R|kotlin/String| = this@R|/C2|.super<R|B2|>.R|/B2.attribute|
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -81,10 +81,10 @@ FILE: RedundantVisibilityModifierChecker.kt
super<R|D|>()
}
protected final override fun willRemainProtected(): R|kotlin/Unit| {
protected open override fun willRemainProtected(): R|kotlin/Unit| {
}
public final override fun willBecomePublic(): R|kotlin/Unit| {
public open override fun willBecomePublic(): R|kotlin/Unit| {
}
}
@@ -17,11 +17,11 @@ FILE: RedundantVisibilityModifierCheckerForInnerComponents.kt
super<R|Foo|>()
}
public final override var id: R|kotlin/Int| = Int(1)
public open override var id: R|kotlin/Int| = Int(1)
public get(): R|kotlin/Int|
public set(value: R|kotlin/Int|): R|kotlin/Unit|
public final override val a: R|kotlin/String| = String(rest)
public open override val a: R|kotlin/String| = String(rest)
public get(): R|kotlin/String|
}
@@ -40,7 +40,7 @@ FILE: RedundantVisibilityModifierCheckerForInnerComponents.kt
super<R|A1|>()
}
public final override var attribute: R|kotlin/String| = this@R|/C1|.super<R|A1|>.R|/A1.attribute|
public open override var attribute: R|kotlin/String| = this@R|/C1|.super<R|A1|>.R|/A1.attribute|
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -63,7 +63,7 @@ FILE: RedundantVisibilityModifierCheckerForInnerComponents.kt
super<R|A2|>()
}
public final override var attribute: R|kotlin/String| = this@R|/C2|.super<R|A2|>.R|/A2.attribute|
public open override var attribute: R|kotlin/String| = this@R|/C2|.super<R|A2|>.R|/A2.attribute|
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -93,7 +93,7 @@ FILE: RedundantVisibilityModifierCheckerForInnerComponents.kt
super<R|B3|>()
}
public final override var attribute: R|kotlin/String| = this@R|/C3|.super<R|B3|>.R|/B3.attribute|
public open override var attribute: R|kotlin/String| = this@R|/C3|.super<R|B3|>.R|/B3.attribute|
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -123,7 +123,7 @@ FILE: RedundantVisibilityModifierCheckerForInnerComponents.kt
super<R|B4|>()
}
public final override var attribute: R|kotlin/String| = this@R|/C4|.super<R|B4|>.R|/B4.attribute|
public open override var attribute: R|kotlin/String| = this@R|/C4|.super<R|B4|>.R|/B4.attribute|
public get(): R|kotlin/String|
public set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -143,7 +143,7 @@ FILE: RedundantVisibilityModifierCheckerForInnerComponents.kt
super<R|A5|>()
}
public final override var attribute: R|kotlin/String| = String(b)
public open override var attribute: R|kotlin/String| = String(b)
public get(): R|kotlin/String|
protected set(value: R|kotlin/String|): R|kotlin/Unit|
@@ -33,7 +33,7 @@ FILE: enums.kt
super<R|Planet|>(Double(1.0), Double(2.0))
}
public final override fun sayHello(): R|kotlin/Unit| {
public open override fun sayHello(): R|kotlin/Unit| {
<Unresolved name: println>#(String(Hello!!!))
}
@@ -44,7 +44,7 @@ FILE: enums.kt
super<R|Planet|>(Double(3.0), Double(4.0))
}
public final override fun sayHello(): R|kotlin/Unit| {
public open override fun sayHello(): R|kotlin/Unit| {
<Unresolved name: println>#(String(Ola!!!))
}
@@ -55,7 +55,7 @@ FILE: enums.kt
super<R|Planet|>(Double(5.0), Double(6.0))
}
public final override fun sayHello(): R|kotlin/Unit| {
public open override fun sayHello(): R|kotlin/Unit| {
<Unresolved name: println>#(String(Privet!!!))
}
@@ -14,11 +14,11 @@ FILE: simpleClass.kt
private final val baz: R|kotlin/Int| = Int(42)
private get(): R|kotlin/Int|
public final override fun foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
public open override fun foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
^foo R|<local>/y|.R|kotlin/String.plus|(R|<local>/x|).R|kotlin/String.plus|(this@R|/SomeClass|.R|/SomeClass.baz|)
}
public final override var bar: R|kotlin/Boolean|
public open override var bar: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ Boolean(true)
}
@@ -18,11 +18,11 @@ FILE: typeParameters.kt
super<R|AbstractList<kotlin/Int>|>()
}
public final override operator fun get(index: R|kotlin/Int|): R|kotlin/Int| {
public open override operator fun get(index: R|kotlin/Int|): R|kotlin/Int| {
^get Int(42)
}
public final override infix fun concat(other: R|List<kotlin/Int>|): R|List<kotlin/Int>| {
public open override infix fun concat(other: R|List<kotlin/Int>|): R|List<kotlin/Int>| {
^concat this@R|/SomeList|
}
@@ -26,7 +26,7 @@ FILE: incorrectSuperCall.kt
super<R|B|>()
}
public final override fun foo(): R|kotlin/Unit| {
public open override fun foo(): R|kotlin/Unit| {
this@R|/C|.super<R|B|>.R|/B.foo|()
this@R|/C|.super<<ERROR TYPE REF: Ambiguous supertype>>.<Unresolved name: bar>#()
this@R|/C|.super<R|B|>.R|/B.baz|()
@@ -56,11 +56,11 @@ FILE: inlineClassMembers.kt
public final fun unbox(): R|kotlin/Unit| {
}
public final override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
public open override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
^equals Boolean(true)
}
public final override fun hashCode(): R|kotlin/Int| {
public open override fun hashCode(): R|kotlin/Int| {
^hashCode Int(1)
}
@@ -82,11 +82,11 @@ FILE: inlineClassMembers.kt
public final fun unbox(): R|kotlin/Unit| {
}
public final override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
public open override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
^equals Boolean(true)
}
public final override fun hashCode(): R|kotlin/Int| {
public open override fun hashCode(): R|kotlin/Int| {
^hashCode Int(1)
}
@@ -7,7 +7,7 @@ FILE: lambdaArgInScopeFunction.kt
private final val name: R|kotlin/String| = R|<local>/name|
private get(): R|kotlin/String|
public final override operator fun compareTo(that: R|KotlinClass|): R|kotlin/Int| {
public open override operator fun compareTo(that: R|KotlinClass|): R|kotlin/Int| {
^compareTo this@R|/KotlinClass|.R|/KotlinClass.name|.R|kotlin/String.compareTo|(R|<local>/that|.R|/KotlinClass.name|)
}
@@ -87,7 +87,7 @@ FILE: KotlinClass.kt
private final val name: R|kotlin/String| = R|<local>/name|
private get(): R|kotlin/String|
public final override operator fun compareTo(that: R|KotlinClass|): R|kotlin/Int| {
public open override operator fun compareTo(that: R|KotlinClass|): R|kotlin/Int| {
^compareTo this@R|/KotlinClass|.R|/KotlinClass.name|.R|kotlin/String.compareTo|(R|<local>/that|.R|/KotlinClass.name|)
}
@@ -9,7 +9,7 @@ FILE: a.kt
super<R|B|>()
}
protected final override val message: R|kotlin/String| = String(expression expected)
protected open override val message: R|kotlin/String| = String(expression expected)
protected get(): R|kotlin/String|
}
@@ -5,7 +5,7 @@ FILE: a.kt
super<R|B|>()
}
protected final override val message: R|kotlin/String| = String(expression expected)
protected open override val message: R|kotlin/String| = String(expression expected)
protected get(): R|kotlin/String|
}
@@ -13,7 +13,7 @@ FILE: localObject.kt
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Int| {
public open override fun foo(): R|kotlin/Int| {
^foo R|<local>/x|.R|kotlin/Int.plus|(Int(1))
}
@@ -39,7 +39,7 @@ FILE: localObject.kt
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Int| {
public open override fun foo(): R|kotlin/Int| {
^foo this@R|/TestProperty|.R|/TestProperty.intConst|.R|kotlin/Int.plus|(Int(1))
}
@@ -55,7 +55,7 @@ FILE: localObject.kt
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Int| {
public open override fun foo(): R|kotlin/Int| {
^foo this@R|/TestProperty|.R|/TestProperty.intConst|.R|kotlin/Int.plus|(Int(1))
}
@@ -70,7 +70,7 @@ FILE: localObject.kt
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Int| {
public open override fun foo(): R|kotlin/Int| {
^foo this@R|special/anonymous|.R|/TestProperty.x|.R|kotlin/Int.plus|(Int(1))
}
@@ -81,10 +81,10 @@ FILE: main.kt
public final val y: R|kotlin/Char| = R|<local>/y|
public get(): R|kotlin/Char|
public final override fun foo(arg: R|kotlin/Double|): R|kotlin/Unit| {
public open override fun foo(arg: R|kotlin/Double|): R|kotlin/Unit| {
}
public final override val v: R|kotlin/String|
public open override val v: R|kotlin/String|
@R|annotations/Simple|() public get(): R|kotlin/String| {
^ String()
}
@@ -19,7 +19,7 @@ FILE: main.kt
super<R|KBase|>()
}
public final override fun <P : R|KI2|, R|KI1|> foo(): R|kotlin/Unit| {
public open override fun <P : R|KI2|, R|KI1|> foo(): R|kotlin/Unit| {
}
}
@@ -22,7 +22,7 @@ FILE: simple.kt
super<R|A|>()
}
public final override fun foo(): R|B| {
public open override fun foo(): R|B| {
^foo this@R|/B|
}
@@ -30,7 +30,7 @@ FILE: simple.kt
^bar this@R|/B|
}
public final override fun buz(p: R|B|): R|B| {
public open override fun buz(p: R|B|): R|B| {
^buz this@R|/B|
}
@@ -30,7 +30,7 @@ FILE: compilerPhase.kt
private/*private to this*/ final val lower: R|CompilerPhase<Context, Data, Data>| = R|<local>/lower|
private/*private to this*/ get(): R|CompilerPhase<Context, Data, Data>|
public final override fun invoke(phaseConfig: R|PhaseConfig|, phaserState: R|PhaserState<Data>|, context: R|Context|, input: R|Data|): R|Data| {
public open override fun invoke(phaseConfig: R|PhaseConfig|, phaserState: R|PhaserState<Data>|, context: R|Context|, input: R|Data|): R|Data| {
lval output: R|Data| = when () {
R|<local>/phaseConfig|.R|/PhaseConfig.needProfiling| -> {
this@R|/NamedCompilerPhase|.R|/NamedCompilerPhase.runAndProfile|(R|<local>/phaseConfig|, R|<local>/phaserState|, R|<local>/context|, R|<local>/input|)
@@ -12,7 +12,7 @@ FILE: defaultParametersFromDifferentScopes.kt
super<R|kotlin/Any|>()
}
public final override fun some(x: R|kotlin/Int|, y: R|kotlin/Int|): R|kotlin/Unit| {
public open override fun some(x: R|kotlin/Int|, y: R|kotlin/Int|): R|kotlin/Unit| {
}
}
@@ -12,12 +12,12 @@ FILE: test.kt
super<R|kotlin/Any|>()
}
public final override val setter: R|kotlin/String|
public open override val setter: R|kotlin/String|
public get(): R|kotlin/String| {
^ String(K)
}
public final override val isDelegated: R|kotlin/Boolean|
public open override val isDelegated: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ Boolean(false)
}
@@ -14,11 +14,11 @@ FILE: simpleClass.kt
private final val baz: R|kotlin/Int| = Int(42)
private get(): R|kotlin/Int|
public final override fun foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
public open override fun foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
^foo R|<local>/y|.R|kotlin/String.plus|(R|<local>/x|).R|kotlin/String.plus|(this@R|/SomeClass|.R|/SomeClass.baz|)
}
public final override var bar: R|kotlin/Boolean|
public open override var bar: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ Boolean(true)
}
@@ -24,10 +24,10 @@ FILE: nullability.kt
super<R|kotlin/Any|>()
}
public final override val data: R|MyData?| = R|<local>/data|
public open override val data: R|MyData?| = R|<local>/data|
public get(): R|MyData?|
public final override fun fdata(): R|MyData?| {
public open override fun fdata(): R|MyData?| {
^fdata Null(null)
}
@@ -37,11 +37,11 @@ FILE: nullability.kt
super<R|kotlin/Any|>()
}
public final override var data: R|MyData?| = R|<local>/data|
public open override var data: R|MyData?| = R|<local>/data|
public get(): R|MyData?|
public set(value: R|MyData?|): R|kotlin/Unit|
public final override fun fdata(): R|MyData?| {
public open override fun fdata(): R|MyData?| {
^fdata Null(null)
}
@@ -51,12 +51,12 @@ FILE: nullability.kt
super<R|kotlin/Any|>()
}
public final override val data: R|MyData?|
public open override val data: R|MyData?|
public get(): R|MyData?| {
^ Null(null)
}
public final override fun fdata(): R|MyData?| {
public open override fun fdata(): R|MyData?| {
^fdata Null(null)
}
@@ -23,7 +23,7 @@ FILE: module_lib_smartcastsFromEquals_differentModule.kt
super<R|kotlin/Any|>()
}
public final override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
public open override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
^equals ===(this@R|/FinalWithOverride|, R|<local>/other|)
}
@@ -22,7 +22,7 @@ FILE: smartcastsFromEquals_sameModule.kt
super<R|kotlin/Any|>()
}
public final override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
public open override operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean| {
^equals ===(this@R|/FinalWithOverride|, R|<local>/other|)
}
@@ -13,7 +13,7 @@ FILE: unstableSmartcastAndAmbiguity.kt
super<R|XdSwimlaneSettings|>()
}
public final override val settingsLogic: R|kotlin/String|
public open override val settingsLogic: R|kotlin/String|
public get(): R|kotlin/String| {
^ String(hello)
}
@@ -4,7 +4,7 @@ FILE: statusResolveForTypealiasAsSuperClass.kt
super<R|kotlin/Any|>()
}
public final override fun foo(): R|kotlin/Unit| {
public open override fun foo(): R|kotlin/Unit| {
}
}
@@ -30,7 +30,7 @@ FILE: exposedFunctionReturnType.kt
super<R|Some|>()
}
public final override fun foo(): R|Some| {
public open override fun foo(): R|Some| {
^foo R|/Some.FIRST|
}
@@ -8,7 +8,7 @@ FILE: intersectionOverrideWithImplicitTypes.kt
super<R|kotlin/Any|>()
}
public final override fun <T, R> foo(value: R|T|, producer: R|(T) -> R|): R|R| {
public open override fun <T, R> foo(value: R|T|, producer: R|(T) -> R|): R|R| {
^foo Null(null)!!
}
@@ -4,7 +4,7 @@ FILE: C.kt
super<R|B|>()
}
public final override fun foo(): R|kotlin/Unit| {
public open override fun foo(): R|kotlin/Unit| {
}
}
@@ -4,7 +4,7 @@ FILE: B.kt
super<R|A|>()
}
protected final override infix fun foo(s: R|kotlin/String|): R|kotlin/String| {
protected open override infix fun foo(s: R|kotlin/String|): R|kotlin/String| {
^foo String()
}
@@ -25,7 +25,7 @@ FILE: main.kt
super<R|JavaClass|>()
}
public final override fun bar(x: R|kotlin/CharSequence|): R|kotlin/Int| {
public open override fun bar(x: R|kotlin/CharSequence|): R|kotlin/Int| {
^bar Int(1)
}
@@ -24,7 +24,7 @@ FILE: inAnonymousObject.kt
this@R|/<anonymous>|.R|/<anonymous>.leaked| = R|<local>/b|
}
public final override fun run(): R|kotlin/Unit| {
public open override fun run(): R|kotlin/Unit| {
R|<local>/c|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()
}
@@ -9,7 +9,7 @@ FILE: anonymousInDelegate.kt
super<R|kotlin/Any|>()
}
public final override fun bar(): R|kotlin/Int| {
public open override fun bar(): R|kotlin/Int| {
^bar Int(42)
}
@@ -28,11 +28,11 @@ FILE: delegateWithAnonymousObject.kt
super<R|kotlin/Any|>()
}
public final override operator fun getValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|): R|IssueListView| {
public open override operator fun getValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|): R|IssueListView| {
^getValue R|/IssueListView.IssueListView|()
}
public final override operator fun setValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|, value: R|IssueListView|): R|kotlin/Unit| {
public open override operator fun setValue(thisRef: R|IssuesListUserProfile|, property: R|kotlin/reflect/KProperty<*>|, value: R|IssueListView|): R|kotlin/Unit| {
^setValue R|/IssueListView.IssueListView|().R|/IssueListView.updateFrom|(R|<local>/value|)
}
@@ -14,7 +14,7 @@ FILE: functionX.kt
super<R|kotlin/Any|>()
}
public final override operator fun invoke(p1: R|kotlin/Int|, p2: R|kotlin/String|): R|kotlin/Unit| {
public open override operator fun invoke(p1: R|kotlin/Int|, p2: R|kotlin/String|): R|kotlin/Unit| {
}
}
@@ -31,13 +31,13 @@ FILE: hashTableWithForEach.kt
super<R|kotlin/Any|>()
}
public final override val key: R|K| = R|<local>/key|
public open override val key: R|K| = R|<local>/key|
public get(): R|K|
public final override val value: R|V| = R|<local>/value|
public open override val value: R|V| = R|<local>/value|
public get(): R|V|
public final override fun setValue(newValue: R|V|): R|V| {
public open override fun setValue(newValue: R|V|): R|V| {
^setValue throw R|java/lang/UnsupportedOperationException.UnsupportedOperationException|()
}
@@ -26,7 +26,7 @@ FILE: buildSetWithVisitor.kt
super<R|AnyVisitor|>()
}
public final override fun visit(arg: R|Wrapper|): R|kotlin/Unit| {
public open override fun visit(arg: R|Wrapper|): R|kotlin/Unit| {
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|<local>/arg|.R|/Wrapper.tag|)
}
@@ -9,7 +9,7 @@ FILE: EnumWithToString.kt
super<R|Some|>()
}
public final override fun toString(): R|kotlin/String| {
public open override fun toString(): R|kotlin/String| {
^toString String(Entry)
}
@@ -54,7 +54,7 @@ FILE: m2.kt
super<R|m1/BaseSingleDatabaseIntrospector<m2/SqliteRoot, m2/SqliteSchema>|>()
}
protected final override fun createDatabaseRetriever(database: R|m2/SqliteRoot|): R|m1/BaseIntrospector.AbstractDatabaseRetriever<m2/SqliteRoot, m2/SqliteRoot, m2/SqliteSchema>| {
protected open override fun createDatabaseRetriever(database: R|m2/SqliteRoot|): R|m1/BaseIntrospector.AbstractDatabaseRetriever<m2/SqliteRoot, m2/SqliteRoot, m2/SqliteSchema>| {
^createDatabaseRetriever object : R|m1/BaseIntrospector.AbstractDatabaseRetriever<m2/SqliteRoot, m2/SqliteRoot, m2/SqliteSchema>| {
private constructor(): R|<anonymous>| {
this@R|m2/SqliteIntrospector|.super<R|m1/BaseIntrospector.AbstractDatabaseRetriever<m2/SqliteRoot, m2/SqliteRoot, m2/SqliteSchema>|>(R|<local>/database|)
@@ -13,7 +13,7 @@ FILE: defaultParameterFromBase.kt
super<R|Base|>()
}
public final override fun foo(arg: R|kotlin/Int|, def: R|kotlin/String|): R|kotlin/Unit| {
public open override fun foo(arg: R|kotlin/Int|, def: R|kotlin/String|): R|kotlin/Unit| {
}
}
@@ -4,7 +4,7 @@ FILE: test.kt
super<R|A|>()
}
public final override fun foo(): R|B| {
public open override fun foo(): R|B| {
^foo this@R|/B|
}
@@ -4,22 +4,22 @@ FILE: smartSet.kt
super<R|java/util/AbstractSet<T>|>()
}
public final override var size: R|kotlin/Int| = Int(0)
public open override var size: R|kotlin/Int| = Int(0)
public get(): R|kotlin/Int|
public set(value: R|kotlin/Int|): R|kotlin/Unit|
public final override operator fun iterator(): R|kotlin/collections/MutableIterator<T>| {
public open override operator fun iterator(): R|kotlin/collections/MutableIterator<T>| {
^iterator R|kotlin/TODO|()
}
public final override fun add(element: R|T|): R|kotlin/Boolean| {
public open override fun add(element: R|T|): R|kotlin/Boolean| {
^add Boolean(true)
}
public final override fun clear(): R|kotlin/Unit| {
public open override fun clear(): R|kotlin/Unit| {
}
public final override operator fun contains(element: R|T|): R|kotlin/Boolean| {
public open override operator fun contains(element: R|T|): R|kotlin/Boolean| {
^contains Boolean(false)
}
@@ -26,7 +26,7 @@ FILE: WithValidityAssertion.kt
private final val lazyValue: R|kotlin/Lazy<T>| = R|kotlin/lazy|<R|T|>(Q|kotlin/LazyThreadSafetyMode|.R|kotlin/LazyThreadSafetyMode.PUBLICATION|, R|<local>/init|)
private get(): R|kotlin/Lazy<T>|
@R|kotlin/Suppress|(names = vararg(String(UNCHECKED_CAST))) public final override operator fun getValue(thisRef: R|kotlin/Any|, property: R|kotlin/reflect/KProperty<*>|): R|T| {
@R|kotlin/Suppress|(names = vararg(String(UNCHECKED_CAST))) public open override operator fun getValue(thisRef: R|kotlin/Any|, property: R|kotlin/reflect/KProperty<*>|): R|T| {
this@R|/ValidityAwareCachedValue|.R|/ValidityAwareCachedValue.token|.R|/KtLifetimeToken.assertIsValid|()
^getValue this@R|/ValidityAwareCachedValue|.R|/ValidityAwareCachedValue.lazyValue|.R|SubstitutionOverride<kotlin/Lazy.value: R|T|>|
}
@@ -53,7 +53,7 @@ FILE: selfReferenceToCompanionObject.kt
))
}
public final override val y: R|kotlin/String| = String(K)
public open override val y: R|kotlin/String| = String(K)
public get(): R|kotlin/String|
public final val closure2: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
@@ -62,7 +62,7 @@ FILE: selfReferenceToCompanionObject.kt
public get(): R|() -> kotlin/String|
public final override val z: R|kotlin/String| = this@R|/<anonymous>|.R|/<anonymous>.closure2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
public open override val z: R|kotlin/String| = this@R|/<anonymous>|.R|/<anonymous>.closure2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
public get(): R|kotlin/String|
}
@@ -458,7 +458,7 @@ abstract class FirInlineDeclarationChecker : FirFunctionChecker() {
if (declaration.containingClassLookupTag() == null) return true
if (effectiveVisibility == EffectiveVisibility.PrivateInClass) return true
if (!declaration.isFinal) {
if (!declaration.isEffectivelyFinal(context)) {
reporter.reportOn(declaration.source, FirErrors.DECLARATION_CANT_BE_INLINED, context)
return false
}
@@ -9,15 +9,16 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.KtRealSourceElementKind
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.hasModifier
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.utils.isOpen
import org.jetbrains.kotlin.fir.declarations.utils.isOverride
import org.jetbrains.kotlin.lexer.KtTokens
object FirOpenMemberChecker : FirClassChecker() {
@@ -29,7 +30,9 @@ object FirOpenMemberChecker : FirClassChecker() {
memberDeclaration is FirConstructor
) continue
val source = memberDeclaration.source ?: continue
if (memberDeclaration.isOpen || memberDeclaration.hasModifier(KtTokens.OPEN_KEYWORD) && source.shouldReportOpenFromSource) {
if (memberDeclaration.isOpen && !memberDeclaration.isOverride && declaration.classKind == ClassKind.ANNOTATION_CLASS ||
memberDeclaration.hasModifier(KtTokens.OPEN_KEYWORD) && source.shouldReportOpenFromSource
) {
if (declaration.classKind == ClassKind.OBJECT) {
reporter.reportOn(source, FirErrors.NON_FINAL_MEMBER_IN_OBJECT, context)
} else {
@@ -7,17 +7,16 @@ package org.jetbrains.kotlin.fir.analysis.checkers.declaration
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.findClosestClassOrObject
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.utils.canHaveAbstractDeclaration
import org.jetbrains.kotlin.fir.declarations.utils.isAbstract
import org.jetbrains.kotlin.fir.declarations.utils.isOpen
import org.jetbrains.kotlin.fir.declarations.utils.visibility
import org.jetbrains.kotlin.fir.types.ConeErrorType
import org.jetbrains.kotlin.fir.types.coneType
@@ -73,7 +72,7 @@ object FirPropertyAccessorsTypesChecker : FirPropertyChecker() {
if (setter.visibility == Visibilities.Private && property.visibility != Visibilities.Private) {
if (isLegallyAbstract) {
reporter.reportOn(setter.source, FirErrors.PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY, context)
} else if (property.isOpen) {
} else if (!property.isEffectivelyFinal(context)) {
reporter.reportOn(setter.source, FirErrors.PRIVATE_SETTER_FOR_OPEN_PROPERTY, context)
}
}
@@ -10,12 +10,14 @@ import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.builtins.functions.FunctionClassKind
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fakeElement
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.canNarrowDownGetterType
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
import org.jetbrains.kotlin.fir.declarations.utils.isFinal
import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.ConeStubDiagnostic
@@ -221,7 +223,14 @@ internal fun typeForQualifierByDeclaration(declaration: FirDeclaration, resultTy
return null
}
private fun FirPropertyWithExplicitBackingFieldResolvedNamedReference.getNarrowedDownSymbol(): FirBasedSymbol<*> {
private fun FirPropertySymbol.isEffectivelyFinal(session: FirSession): Boolean {
if (isFinal) return true
val containingClass = dispatchReceiverType?.toRegularClassSymbol(session)
?: return false
return containingClass.modality == Modality.FINAL && containingClass.classKind != ClassKind.ENUM_CLASS
}
private fun FirPropertyWithExplicitBackingFieldResolvedNamedReference.getNarrowedDownSymbol(session: FirSession): FirBasedSymbol<*> {
val propertyReceiver = resolvedSymbol as? FirPropertySymbol ?: return resolvedSymbol
// This can happen in case of 2 properties referencing
@@ -234,7 +243,7 @@ private fun FirPropertyWithExplicitBackingFieldResolvedNamedReference.getNarrowe
}
if (
propertyReceiver.isFinal &&
propertyReceiver.isEffectivelyFinal(session) &&
hasVisibleBackingField &&
propertyReceiver.canNarrowDownGetterType
) {
@@ -255,7 +264,7 @@ fun <T : FirResolvable> BodyResolveComponents.typeFromCallee(access: T): FirReso
typeFromSymbol(newCallee.candidateSymbol, false)
}
is FirPropertyWithExplicitBackingFieldResolvedNamedReference -> {
val symbol = newCallee.getNarrowedDownSymbol()
val symbol = newCallee.getNarrowedDownSymbol(session)
typeFromSymbol(symbol, false)
}
is FirResolvedNamedReference -> {
@@ -390,16 +390,8 @@ class FirStatusResolver(
else -> Modality.OPEN
}
}
else -> {
if (declaration.isOverride &&
(containingClass.modality != Modality.FINAL || containingClass.classKind == ClassKind.ENUM_CLASS)
) {
Modality.OPEN
} else {
Modality.FINAL
}
}
declaration.isOverride -> Modality.OPEN
else -> Modality.FINAL
}
}
@@ -93,7 +93,7 @@ abstract class DataClassMembersGenerator(
// data classes and corresponding properties can be non-final.
// We should use getters for such properties (see KT-41284).
val backingField = property.backingField
return if (!forbidDirectFieldAccess && property.modality == Modality.FINAL && backingField != null) {
return if (!forbidDirectFieldAccess && irClass.isFinalClass && backingField != null) {
irGetField(receiver, backingField)
} else {
irCall(property.getter!!).apply {
@@ -9,7 +9,7 @@ public static final class Equals /* p.Wrapper.Equals*/ {
private final p.G code;
@java.lang.Override()
public final boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object)
public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object)
@org.jetbrains.annotations.NotNull()
public final p.G component1();// component1()
@@ -32,7 +32,7 @@ public static final class Equals /* p.Wrapper.Equals*/ {
private final p.G code;
@java.lang.Override()
public final int hashCode();// hashCode()
public int hashCode();// hashCode()
@org.jetbrains.annotations.NotNull()
public final p.G component1();// component1()
@@ -56,7 +56,7 @@ public static final class Equals /* p.Wrapper.Equals*/ {
@java.lang.Override()
@org.jetbrains.annotations.NotNull()
public final java.lang.String toString();// toString()
public java.lang.String toString();// toString()
@org.jetbrains.annotations.NotNull()
public final p.G component1();// component1()
+1 -1
View File
@@ -6,7 +6,7 @@ static final class FirstEntry /* p.KotlinEnum.FirstEntry*/ extends p.KotlinEnum
FirstEntry();// .ctor()
@java.lang.Override()
public final void abstractFun();// abstractFun()
public void abstractFun();// abstractFun()
public final int getFirstEntryProp();// getFirstEntryProp()
@@ -1,6 +1,6 @@
public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 {
@java.lang.Override()
public final void g();// g()
public void g();// g()
public Inheritor();// .ctor()
@@ -3,13 +3,13 @@ public final class A /* p.A*/ {
@java.lang.Override()
@org.jetbrains.annotations.NotNull()
public final java.lang.String toString();// toString()
public java.lang.String toString();// toString()
@java.lang.Override()
public final boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object)
public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object)
@java.lang.Override()
public final int hashCode();// hashCode()
public int hashCode();// hashCode()
public A(int);// .ctor(int)
@@ -1,11 +1,11 @@
public final class TwoOverrides /* TwoOverrides*/ implements java.lang.Iterable<java.lang.String>, kotlin.collections.Iterable<java.lang.String>, kotlin.jvm.internal.markers.KMappedMarker {
@java.lang.Override()
@org.jetbrains.annotations.Nullable()
public final java.lang.Void iterator();// iterator()
public java.lang.Void iterator();// iterator()
@java.lang.Override()
@org.jetbrains.annotations.Nullable()
public final java.lang.Void iterator();// iterator()
public java.lang.Void iterator();// iterator()
public TwoOverrides();// .ctor()
@@ -5,42 +5,42 @@ public final class Container /* p1.Container*/ {
public static final class MyNumber /* p1.Container.MyNumber*/ extends java.lang.Number {
@java.lang.Override()
public final byte toByte();// toByte()
public byte toByte();// toByte()
@java.lang.Override()
public final char toChar();// toChar()
public char toChar();// toChar()
@java.lang.Override()
public final double toDouble();// toDouble()
public double toDouble();// toDouble()
@java.lang.Override()
public final float toFloat();// toFloat()
public float toFloat();// toFloat()
@java.lang.Override()
public final int toInt();// toInt()
public int toInt();// toInt()
@java.lang.Override()
public final long toLong();// toLong()
public long toLong();// toLong()
@java.lang.Override()
public final short toShort();// toShort()
public short toShort();// toShort()
public MyNumber();// .ctor()
}public static final class MyString /* p1.Container.MyString*/ implements java.lang.CharSequence {
@java.lang.Override()
@org.jetbrains.annotations.NotNull()
public final java.lang.CharSequence subSequence(int, int);// subSequence(int, int)
public java.lang.CharSequence subSequence(int, int);// subSequence(int, int)
@java.lang.Override()
public final char get(int);// get(int)
public char get(int);// get(int)
public MyString();// .ctor()
public final error.NonExistentClass chars();// chars()
public error.NonExistentClass chars();// chars()
public final error.NonExistentClass codePoints();// codePoints()
public error.NonExistentClass codePoints();// codePoints()
public final int getLength();// getLength()
public int getLength();// getLength()
}}
@@ -1,6 +1,6 @@
public final class TypeHierarchyMap /* p1.TypeHierarchyMap*/<TValue> implements java.util.Map<java.lang.Class<?>, TValue>, kotlin.collections.Map<java.lang.Class<?>, TValue>, kotlin.jvm.internal.markers.KMappedMarker {
@java.lang.Override()
public final boolean containsKey(@org.jetbrains.annotations.NotNull() java.lang.Class<?>);// containsKey(java.lang.Class<?>)
public boolean containsKey(@org.jetbrains.annotations.NotNull() java.lang.Class<?>);// containsKey(java.lang.Class<?>)
public TypeHierarchyMap();// .ctor()
@@ -11,13 +11,13 @@ public final class SmartSet /* SmartSet*/<T> extends kotlin.collections.Abstrac
@java.lang.Override()
@org.jetbrains.annotations.NotNull()
public final java.util.Iterator<T> iterator();// iterator()
public java.util.Iterator<T> iterator();// iterator()
@java.lang.Override()
public final boolean add(T);// add(T)
public boolean add(T);// add(T)
@java.lang.Override()
public final void clear();// clear()
public void clear();// clear()
@kotlin.jvm.JvmStatic()
@org.jetbrains.annotations.NotNull()
@@ -29,9 +29,9 @@ public final class SmartSet /* SmartSet*/<T> extends kotlin.collections.Abstrac
private SmartSet();// .ctor()
public final int getSize();// getSize()
public int getSize();// getSize()
public final void setSize(int);// setSize(int)
public void setSize(int);// setSize(int)
public static final class Companion /* SmartSet.Companion*/ {
@@ -1,6 +1,6 @@
public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 {
@java.lang.Override()
public final void g();// g()
public void g();// g()
public Inheritor();// .ctor()
@@ -1,8 +1,8 @@
public final class C /* p.C*/ {
public C();// .ctor()
public final int af();// af()
public int af();// af()
public final int getAp();// getAp()
public int getAp();// getAp()
}
@@ -3,10 +3,10 @@ public final class C /* p.C*/ {
public C();// .ctor()
public final int af();// af()
public int af();// af()
public final int getAp();// getAp()
public int getAp();// getAp()
public final int getIp();// getIp()
public int getIp();// getIp()
}
@@ -1,8 +1,8 @@
public final class C /* p.C*/ {
public C();// .ctor()
public final int af();// af()
public int af();// af()
public final int getAp();// getAp()
public int getAp();// getAp()
}
@@ -2,10 +2,10 @@ public final class C /* C*/ implements Tr {
private final int v;
@java.lang.Override()
public final int foo();// foo()
public int foo();// foo()
public C();// .ctor()
public final int getV();// getV()
public int getV();// getV()
}
@@ -1,6 +1,6 @@
public final class C /* C*/ implements Base {
@java.lang.Override()
public final void foo();// foo()
public void foo();// foo()
public C();// .ctor()
@@ -1,6 +1,6 @@
public final class C /* C*/ implements Base<kotlin.Unit> {
@java.lang.Override()
public final void foo(@org.jetbrains.annotations.NotNull() kotlin.Unit);// foo(kotlin.Unit)
public void foo(@org.jetbrains.annotations.NotNull() kotlin.Unit);// foo(kotlin.Unit)
public C();// .ctor()
@@ -29,7 +29,7 @@ public abstract interface Base /* Base*/ {
public final class Derived /* Derived*/ implements Base {
@java.lang.Override()
@org.jetbrains.annotations.Nullable()
public final java.lang.Object foo(@org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super kotlin.Unit>);// foo(kotlin.coroutines.Continuation<? super kotlin.Unit>)
public java.lang.Object foo(@org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super kotlin.Unit>);// foo(kotlin.coroutines.Continuation<? super kotlin.Unit>)
public Derived();// .ctor()
@@ -17,10 +17,10 @@ public final class BaseImpl /* BaseImpl*/ implements Base {
private final int x;
@java.lang.Override()
public final void printMessage();// printMessage()
public void printMessage();// printMessage()
@java.lang.Override()
public final void printMessageLine();// printMessageLine()
public void printMessageLine();// printMessageLine()
public BaseImpl(int);// .ctor(int)
@@ -30,10 +30,10 @@ public final class BaseImpl /* BaseImpl*/ implements Base {
public final class Derived /* Derived*/ implements Base {
@java.lang.Override()
public final void printMessage();// printMessage()
public int foo(@org.jetbrains.annotations.NotNull() java.lang.String, @org.jetbrains.annotations.Nullable() java.lang.Object);// foo(java.lang.String, java.lang.Object)
@java.lang.Override()
public int foo(@org.jetbrains.annotations.NotNull() java.lang.String, @org.jetbrains.annotations.Nullable() java.lang.Object);// foo(java.lang.String, java.lang.Object)
public void printMessage();// printMessage()
@java.lang.Override()
public void printMessageLine();// printMessageLine()
@@ -1,7 +1,7 @@
public final class MyList /* MyList*/ implements java.util.List<java.lang.String>, kotlin.collections.List<java.lang.String>, kotlin.jvm.internal.markers.KMappedMarker {
@java.lang.Override()
@org.jetbrains.annotations.NotNull()
public final java.lang.String get(int);// get(int)
public java.lang.String get(int);// get(int)
public MyList();// .ctor()
@@ -29,7 +29,7 @@ final class C /* C*/ {
final class null /* null*/ {
@java.lang.Override()
@org.jetbrains.annotations.NotNull()
public final java.lang.String toString();// toString()
public java.lang.String toString();// toString()
private ();// .ctor()
@@ -51,7 +51,7 @@ public final class ValidPublicSupertype /* ValidPublicSupertype*/ {
final class null /* null*/ implements java.lang.Runnable {
@java.lang.Override()
public final void run();// run()
public void run();// run()
private ();// .ctor()
@@ -59,7 +59,7 @@ final class null /* null*/ implements java.lang.Runnable {
final class null /* null*/ implements java.lang.Runnable {
@java.lang.Override()
public final void run();// run()
public void run();// run()
private ();// .ctor()
@@ -84,7 +84,7 @@ public final class InvalidPublicSupertype /* InvalidPublicSupertype*/ {
final class null /* null*/ implements I, java.lang.Runnable {
@java.lang.Override()
public final void run();// run()
public void run();// run()
private ();// .ctor()
@@ -92,7 +92,7 @@ final class null /* null*/ implements I, java.lang.Runnable {
final class null /* null*/ implements I, java.lang.Runnable {
@java.lang.Override()
public final void run();// run()
public void run();// run()
private ();// .ctor()
@@ -38,14 +38,14 @@ public final class Derived /* Derived*/ extends Base implements IntfWithProp {
private final int x = 3 /* initializer type: int */;
@java.lang.Override()
public final error.NonExistentClass v();// v()
public error.NonExistentClass v();// v()
@java.lang.Override()
public final int abs();// abs()
public int abs();// abs()
public Derived(int);// .ctor(int)
public final int getX();// getX()
public int getX();// getX()
}
@@ -76,6 +76,6 @@ public abstract class AnotherDerived /* AnotherDerived*/ extends Base {
final class Private /* Private*/ {
public Private();// .ctor()
public final boolean getOverridesNothing();// getOverridesNothing()
public boolean getOverridesNothing();// getOverridesNothing()
}
@@ -30,8 +30,8 @@ public final class InlineInheritance /* InlineInheritance*/ {
public final int getV();// getV()
public final int getX();// getX()
public int getX();// getX()
public final int y();// y()
public int y();// y()
}
@@ -115,7 +115,7 @@ public final class Obj /* Obj*/ implements java.lang.Runnable {
public static final Obj INSTANCE;
@java.lang.Override()
public final void run();// run()
public void run();// run()
@kotlin.jvm.JvmStatic()
public static final int zoo();// zoo()
@@ -1,5 +1,3 @@
// IGNORE_BACKEND_K2: JVM_IR
// FIR status: questionable bytecode listing difference (open/final methods in final class)
// WITH_STDLIB
// WITH_COROUTINES
// CHECK_BYTECODE_LISTING
@@ -1,5 +1,3 @@
// IGNORE_BACKEND_K2: JVM_IR
// FIR status: questionable bytecode listing difference (open/final methods in final class)
// WITH_STDLIB
// WITH_COROUTINES
// CHECK_BYTECODE_LISTING

Some files were not shown because too many files have changed in this diff Show More