Files
Ivan Kochurkin 69b9bfc3e0 [FIR] Initialize public visibility for class-like declarations at FIR building phase if no modifier is presented
Java resolving subsystem requires calculated visibility for correct disambiguation of supertypes.
But visibility remains `Unknown` for Kotlin class-like declarations during supertypes resolving because `STATUS` resolve phase is performed after `SUPER_TYPES` phase.
To fix the problem, the visibility should be initialized to public at the FIR building phase if no modifier is presented.

^KT-64127 Fixed
2024-01-04 16:17:32 +00:00

128 lines
5.8 KiB
Plaintext
Vendored

FILE: annotation.kt
@Target(AnnotationTarget#.CLASS#, AnnotationTarget#.PROPERTY#, AnnotationTarget#.LOCAL_VARIABLE#, AnnotationTarget#.VALUE_PARAMETER#, AnnotationTarget#.CONSTRUCTOR#, AnnotationTarget#.FUNCTION#, AnnotationTarget#.TYPE#) public final? annotation class base : R|kotlin/Annotation| {
public? [ContainingClassKey=base] constructor(): R|base| {
super<R|kotlin/Any|>()
}
}
@base() public final? class correct : R|kotlin/Any| {
public? [ContainingClassKey=correct] constructor([CorrespondingProperty=/correct.x] @base() x: Int): R|correct| {
super<R|kotlin/Any|>()
}
@base() public? final? [IsFromPrimaryConstructor=true] val x: Int = R|<local>/x|
public? [ContainingClassKey=correct] get(): Int
@base() public? [ContainingClassKey=correct] constructor(): R|correct| {
this<R|correct|>(IntegerLiteral(0))
}
@base() init {
}
}
@base() public final? enum class My : R|kotlin/Enum<My>| {
private [ContainingClassKey=My] constructor(): R|My| {
super<R|kotlin/Enum<My>|>()
}
@base() public final static [ContainingClassKey=My] enum entry FIRST: R|My| = object : R|My| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|My|>()
}
}
@base() public final static [ContainingClassKey=My] enum entry SECOND: R|My| = object : R|My| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|My|>()
}
}
public final static [ContainingClassKey=My] fun values(): R|kotlin/Array<My>| {
}
public final static [ContainingClassKey=My] fun valueOf(value: R|kotlin/String|): R|My| {
}
public final static [ContainingClassKey=My] val entries: R|kotlin/enums/EnumEntries<My>|
public get(): R|kotlin/enums/EnumEntries<My>|
}
@base() public? final? fun foo(@base() y: @base() Int): @base() Int {
@base() local final? fun bar(@base() z: @base() Int): <implicit> {
^bar z#.plus#(IntegerLiteral(1))
}
@base() lval local: <implicit> = bar#(y#)
^foo local#
}
@base() public? final? val z: <implicit> = IntegerLiteral(0)
public? get(): <implicit>
@base() public? final? val x: Map<@base() Int, List<@base() Int>> = mapOf#()
public? get(): Map<@base() Int, List<@base() Int>>
@Target(AnnotationTarget#.CLASS#, AnnotationTarget#.PROPERTY#, AnnotationTarget#.LOCAL_VARIABLE#, AnnotationTarget#.VALUE_PARAMETER#, AnnotationTarget#.CONSTRUCTOR#, AnnotationTarget#.FUNCTION#, AnnotationTarget#.TYPE#) @base() public final? annotation class derived : base, R|kotlin/Annotation| {
public? [ContainingClassKey=derived] constructor([CorrespondingProperty=/derived.x] x: Int): R|derived| {
super<R|kotlin/Any|>()
}
public? final? [IsFromPrimaryConstructor=true] val x: Int = R|<local>/x|
public? [ContainingClassKey=derived] get(): Int
}
@derived(IntegerLiteral(1)) public final? class correctDerived : R|kotlin/Any| {
public? [ContainingClassKey=correctDerived] constructor([CorrespondingProperty=/correctDerived.x] @derived(IntegerLiteral(1)) x: @derived(IntegerLiteral(1)) Int): R|correctDerived| {
super<R|kotlin/Any|>()
}
@derived(IntegerLiteral(1)) public? final? [IsFromPrimaryConstructor=true] val x: @derived(IntegerLiteral(1)) Int = R|<local>/x|
public? [ContainingClassKey=correctDerived] get(): @derived(IntegerLiteral(1)) Int
@base() public? [ContainingClassKey=correctDerived] constructor(): R|correctDerived| {
this<R|correctDerived|>(IntegerLiteral(0))
}
}
@derived(IntegerLiteral(1)) public final? enum class MyDerived : R|kotlin/Enum<MyDerived>| {
private [ContainingClassKey=MyDerived] constructor(): R|MyDerived| {
super<R|kotlin/Enum<MyDerived>|>()
}
@derived(IntegerLiteral(1)) public final static [ContainingClassKey=MyDerived] enum entry FIRST: R|MyDerived| = object : R|MyDerived| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|MyDerived|>()
}
}
@derived(IntegerLiteral(1)) public final static [ContainingClassKey=MyDerived] enum entry SECOND: R|MyDerived| = object : R|MyDerived| {
private [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
super<R|MyDerived|>()
}
}
public final static [ContainingClassKey=MyDerived] fun values(): R|kotlin/Array<MyDerived>| {
}
public final static [ContainingClassKey=MyDerived] fun valueOf(value: R|kotlin/String|): R|MyDerived| {
}
public final static [ContainingClassKey=MyDerived] val entries: R|kotlin/enums/EnumEntries<MyDerived>|
public get(): R|kotlin/enums/EnumEntries<MyDerived>|
}
@derived(IntegerLiteral(1)) public? final? fun fooDerived(@derived(IntegerLiteral(1)) y: @derived(IntegerLiteral(1)) Int): @derived(IntegerLiteral(1)) Int {
@derived(IntegerLiteral(1)) local final? fun bar(@derived(IntegerLiteral(1)) z: @derived(IntegerLiteral(1)) Int): <implicit> {
^bar z#.plus#(IntegerLiteral(1))
}
@derived(IntegerLiteral(1)) lval local: <implicit> = bar#(y#)
^fooDerived local#
}
@derived(IntegerLiteral(1)) public? final? val zDerived: <implicit> = IntegerLiteral(0)
public? get(): <implicit>
@derived(IntegerLiteral(1)) public? final? val xDerived: Map<@derived(IntegerLiteral(1)) Int, List<@derived(IntegerLiteral(1)) Int>> = mapOf#()
public? get(): Map<@derived(IntegerLiteral(1)) Int, List<@derived(IntegerLiteral(1)) Int>>