Files
kotlin-fork/analysis/low-level-api-fir/testData/lazyResolve/complexLocalHierarchy.txt
T
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

188 lines
6.9 KiB
Plaintext
Vendored

RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPANION_GENERATION)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public? final? [ResolvedTo(SUPER_TYPES)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
TYPES:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public? final? [ResolvedTo(TYPES)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
STATUS:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(STATUS)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(CONTRACTS)] fun resolveMe(): R|kotlin/Unit| {
local open [ResolvedTo(RAW_FIR)] class A : B {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor(): R|<local>/A| {
super<B>()
}
}
local final? [ResolvedTo(RAW_FIR)] class B : NonLocalInterface {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=B] constructor(): R|<local>/B| {
super<<implicit>>()
}
local final? inner [ResolvedTo(RAW_FIR)] [ContainingClassKey=B] class C : A {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] <local>/B.constructor(): R|<local>/B.C| {
super<A>()
}
}
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
local open [ResolvedTo(RAW_FIR)] class A : B {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor(): R|<local>/A| {
super<B>()
}
}
local final? [ResolvedTo(RAW_FIR)] class B : NonLocalInterface {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=B] constructor(): R|<local>/B| {
super<<implicit>>()
}
local final? inner [ResolvedTo(RAW_FIR)] [ContainingClassKey=B] class C : A {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] <local>/B.constructor(): R|<local>/B.C| {
super<A>()
}
}
}
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public final? [ResolvedTo(RAW_FIR)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun resolveMe(): R|kotlin/Unit| {
local open [ResolvedTo(RAW_FIR)] class A : B {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor(): R|<local>/A| {
super<B>()
}
}
local final? [ResolvedTo(RAW_FIR)] class B : NonLocalInterface {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=B] constructor(): R|<local>/B| {
super<<implicit>>()
}
local final? inner [ResolvedTo(RAW_FIR)] [ContainingClassKey=B] class C : A {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] <local>/B.constructor(): R|<local>/B.C| {
super<A>()
}
}
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] complexLocalHierarchy.kt
public abstract [ResolvedTo(STATUS)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
local open [ResolvedTo(BODY_RESOLVE)] class A : <ERROR TYPE REF: Symbol not found for B> {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor(): R|<local>/A| {
super<<ERROR TYPE REF: Symbol not found for B>>()
}
}
local final [ResolvedTo(BODY_RESOLVE)] class B : R|one/NonLocalInterface| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] constructor(): R|<local>/B| {
super<R|kotlin/Any|>()
}
local final inner [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] class C : R|<local>/A| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] <local>/B.constructor(): R|<local>/B.C| {
super<R|<local>/A|>()
}
}
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] complexLocalHierarchy.kt
public abstract [ResolvedTo(BODY_RESOLVE)] interface NonLocalInterface : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe(): R|kotlin/Unit| {
local open [ResolvedTo(BODY_RESOLVE)] class A : <ERROR TYPE REF: Symbol not found for B> {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor(): R|<local>/A| {
super<<ERROR TYPE REF: Symbol not found for B>>()
}
}
local final [ResolvedTo(BODY_RESOLVE)] class B : R|one/NonLocalInterface| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] constructor(): R|<local>/B| {
super<R|kotlin/Any|>()
}
local final inner [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] class C : R|<local>/A| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] <local>/B.constructor(): R|<local>/B.C| {
super<R|<local>/A|>()
}
}
}
}