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

80 lines
2.2 KiB
Plaintext
Vendored

FILE: script.kts
SCRIPT: <script-script.kts>
public final? class Builder : R|kotlin/Any| {
public? [ContainingClassKey=Builder] constructor(): R|Builder| {
super<R|kotlin/Any|>()
}
public? final? var version: String = String()
public? [ContainingClassKey=Builder] get(): String
public? [ContainingClassKey=Builder] set(value: String): R|kotlin/Unit|
public? final? fun execute(): R|kotlin/Unit| {
println#(version#)
}
public final? class Nested : R|kotlin/Any| {
public? [ContainingClassKey=Nested] constructor(): R|Builder.Nested| {
super<R|kotlin/Any|>()
}
public? final? fun foo(): R|kotlin/Unit| {
}
public? final? fun boo(): R|kotlin/Unit| {
}
}
}
public? final? fun build(action: ( Builder.() -> Unit )): <implicit> {
^build Builder#().apply#(action#)
}
public? final? fun build2(action: ( Builder.() -> Unit )): Builder {
^build2 Builder#().apply#(action#)
}
init {
build#(<L> = build@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
version# = String(123)
local final? class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|<local>/A| {
super<R|kotlin/Any|>()
}
public? final? fun doo(): R|kotlin/Unit| {
}
}
execute#()
}
)
}
init {
+=(version#, IntegerLiteral(123))
}
public? final? val builder: <implicit> = build#(<L> = build@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
version# = String(321)
}
)
public? get(): <implicit>
init {
println#()
}
init {
builder#.version# = String()
}
init {
builder#.execute#()
}