diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt index 18b4a528173..705289872f1 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt @@ -236,11 +236,10 @@ class FakeOverrideGenerator( // But they are treated differently in IR (real declarations have already been declared before) and such methods are present among realDeclarationSymbols if (originalSymbol in realDeclarationSymbols) return - if (!session.visibilityChecker.isVisibleForOverriding(klass.moduleData, klass.symbol, originalDeclaration)) return - - val origin = IrDeclarationOrigin.FAKE_OVERRIDE val baseSymbol = originalSymbol.unwrapSubstitutionAndIntersectionOverrides() as S + if (!session.visibilityChecker.isVisibleForOverriding(klass.moduleData, klass.symbol, baseSymbol.fir)) return + val (fakeOverrideFirDeclaration, baseFirSymbolsForFakeOverride) = when { originalSymbol.shouldHaveComputedBaseSymbolsForClass(classLookupTag) -> { // Substitution or intersection case @@ -268,7 +267,7 @@ class FakeOverrideGenerator( ?: createIrDeclaration( fakeOverrideFirDeclaration, irClass, - origin, + IrDeclarationOrigin.FAKE_OVERRIDE, isLocal ) if (containsErrorTypes(irDeclaration)) { diff --git a/compiler/testData/ir/irText/firProblems/ArrayListOverrides.fir.ir.txt b/compiler/testData/ir/irText/firProblems/ArrayListOverrides.fir.ir.txt index d2643dcc7ca..c4a1b7933a5 100644 --- a/compiler/testData/ir/irText/firProblems/ArrayListOverrides.fir.ir.txt +++ b/compiler/testData/ir/irText/firProblems/ArrayListOverrides.fir.ir.txt @@ -6,11 +6,6 @@ FILE fqName: fileName:/ArrayListOverrides.kt DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in java.util.ArrayList' : kotlin.String INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A1 modality:FINAL visibility:public superTypes:[java.util.ArrayList]' - FUN FAKE_OVERRIDE name:elementData visibility:public/*package*/ modality:OPEN <> ($this:java.util.ArrayList, p0:kotlin.Int) returnType:@[FlexibleNullability] kotlin.String? [fake_override] - overridden: - public/*package*/ open fun elementData (p0: kotlin.Int): @[FlexibleNullability] E of java.util.ArrayList? declared in java.util.ArrayList - $this: VALUE_PARAMETER name: type:java.util.ArrayList - VALUE_PARAMETER name:p0 index:0 type:kotlin.Int PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val] overridden: public open size: kotlin.Int @@ -208,11 +203,6 @@ FILE fqName: fileName:/ArrayListOverrides.kt BLOCK_BODY RETURN type=kotlin.Nothing from='public open fun remove (x: kotlin.String): kotlin.Boolean declared in .A2' CONST Boolean type=kotlin.Boolean value=true - FUN FAKE_OVERRIDE name:elementData visibility:public/*package*/ modality:OPEN <> ($this:java.util.ArrayList, p0:kotlin.Int) returnType:@[FlexibleNullability] kotlin.String? [fake_override] - overridden: - public/*package*/ open fun elementData (p0: kotlin.Int): @[FlexibleNullability] E of java.util.ArrayList? declared in java.util.ArrayList - $this: VALUE_PARAMETER name: type:java.util.ArrayList - VALUE_PARAMETER name:p0 index:0 type:kotlin.Int PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val] overridden: public open size: kotlin.Int diff --git a/compiler/testData/ir/irText/firProblems/MultiList.fir.ir.txt b/compiler/testData/ir/irText/firProblems/MultiList.fir.ir.txt index 173550fe022..debd99c2da4 100644 --- a/compiler/testData/ir/irText/firProblems/MultiList.fir.ir.txt +++ b/compiler/testData/ir/irText/firProblems/MultiList.fir.ir.txt @@ -354,11 +354,6 @@ FILE fqName: fileName:/MultiList.kt public open fun forEach (p0: @[FlexibleNullability] java.util.function.Consumer?): kotlin.Unit declared in java.util.ArrayList $this: VALUE_PARAMETER name: type:java.util.ArrayList<.Some.SomeList>> VALUE_PARAMETER name:p0 index:0 type:@[FlexibleNullability] java.util.function.Consumer.Some.SomeList>?>? - FUN FAKE_OVERRIDE name:elementData visibility:public/*package*/ modality:OPEN <> ($this:java.util.ArrayList<.Some.SomeList>>, p0:kotlin.Int) returnType:@[FlexibleNullability] .Some.SomeList>? [fake_override] - overridden: - public/*package*/ open fun elementData (p0: kotlin.Int): @[FlexibleNullability] E of java.util.ArrayList? declared in java.util.ArrayList - $this: VALUE_PARAMETER name: type:java.util.ArrayList<.Some.SomeList>> - VALUE_PARAMETER name:p0 index:0 type:kotlin.Int FUN FAKE_OVERRIDE name:trimToSize visibility:public modality:OPEN <> ($this:java.util.ArrayList<.Some.SomeList>>) returnType:kotlin.Unit [fake_override] overridden: public open fun trimToSize (): kotlin.Unit declared in java.util.ArrayList @@ -548,11 +543,6 @@ FILE fqName: fileName:/MultiList.kt public open fun forEach (p0: @[FlexibleNullability] java.util.function.Consumer.Some.SomeList>?>?): kotlin.Unit declared in .SomeList $this: VALUE_PARAMETER name: type:java.util.ArrayList<.Some> VALUE_PARAMETER name:p0 index:0 type:@[FlexibleNullability] java.util.function.Consumer.Some?>? - FUN FAKE_OVERRIDE name:elementData visibility:public/*package*/ modality:OPEN <> ($this:java.util.ArrayList<.Some>, p0:kotlin.Int) returnType:@[FlexibleNullability] .Some? [fake_override] - overridden: - public/*package*/ open fun elementData (p0: kotlin.Int): @[FlexibleNullability] .Some.SomeList>? declared in .SomeList - $this: VALUE_PARAMETER name: type:java.util.ArrayList<.Some> - VALUE_PARAMETER name:p0 index:0 type:kotlin.Int FUN FAKE_OVERRIDE name:trimToSize visibility:public modality:OPEN <> ($this:java.util.ArrayList<.Some>) returnType:kotlin.Unit [fake_override] overridden: public open fun trimToSize (): kotlin.Unit declared in .SomeList