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

106 lines
2.9 KiB
Plaintext
Vendored

FILE: classWithWrongSuperCall.kt
public open class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(init: ( A.() -> Unit )): R|A| {
super<R|kotlin/Any|>()
}
public? final? val prop: String = String()
public? [ContainingClassKey=A] get(): String
}
public final? object B : A {
private [ContainingClassKey=B] constructor(): R|B| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
^ Unit
}
)
}
}
public final? object C : A {
private [ContainingClassKey=C] constructor(): R|C| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo B#.prop#.toString#()
}
}
)
}
}
public final? class D : A {
public? [ContainingClassKey=D] constructor(): R|D| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo B#.prop#.toString#()
}
}
)
}
}
public final? class E : A {
public? [ContainingClassKey=E] constructor(): R|E| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo B#.prop#.toString#()
}
}
)
}
}
public final? class F : A {
public? [ContainingClassKey=F] error_constructor(): R|F| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo B#.prop#.toString#()
}
}
)
}
public? [ContainingClassKey=F] constructor(): R|F| {
super<A>()
}
}
public final? class G : A {
public? [ContainingClassKey=G] error_constructor(): R|G| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo B#.prop#.toString#()
}
}
)
}
public? [ContainingClassKey=G] constructor(): R|G| {
super<A>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo C#.prop#.toString#()
}
}
)
}
}
public final? class H : A {
public? [ContainingClassKey=H] constructor(): R|H| {
super<<implicit>>(fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
local final? fun foo(): <implicit> {
^foo B#.prop#.toString#()
}
}
)
}
}