Files
kotlin-fork/analysis/low-level-api-fir/testdata/lazyResolve/classes/nestedClass.txt
T
Dmitrii Gridin 873c7d63ed [LL FIR] avoid redundant pass through the entire super type hierarchy for nested classes
We can omit this step in LL FIR because, according to the contract,
an outer class must be resolved before nested class
Also, it drops unsafe access to superTypeRefs from FIR transformer

^KT-56550
2023-05-08 12:06:55 +00:00

406 lines
16 KiB
Plaintext

RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<TopLevelClass>
}
}
public? final? [ResolvedTo(RAW_FIR)] class OuterClass : AnotherTopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<AnotherTopLevelClass>
}
public? final? [ResolvedTo(RAW_FIR)] class NestedClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<TopLevelClass>
}
}
public? final? [ResolvedTo(RAW_FIR)] class OuterClass : AnotherTopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<AnotherTopLevelClass>
}
public? final? [ResolvedTo(RAW_FIR)] class NestedClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<TopLevelClass>
}
}
public? final? [ResolvedTo(RAW_FIR)] class OuterClass : AnotherTopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<AnotherTopLevelClass>
}
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class NestedClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public? open [ResolvedTo(RAW_FIR)] class TopLevelClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public? open [ResolvedTo(RAW_FIR)] class AnotherTopLevelClass : TopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<TopLevelClass>
}
}
public? final? [ResolvedTo(RAW_FIR)] class OuterClass : AnotherTopLevelClass {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<AnotherTopLevelClass>
}
public? final? [ResolvedTo(COMPANION_GENERATION)] class NestedClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public? open [ResolvedTo(SUPER_TYPES)] class TopLevelClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public? open [ResolvedTo(SUPER_TYPES)] class AnotherTopLevelClass : R|TopLevelClass| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<TopLevelClass>
}
}
public? final? [ResolvedTo(SUPER_TYPES)] class OuterClass : R|AnotherTopLevelClass| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<AnotherTopLevelClass>
}
public? final? [ResolvedTo(SUPER_TYPES)] class NestedClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
TYPES:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public? open [ResolvedTo(SUPER_TYPES)] class TopLevelClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public? open [ResolvedTo(SUPER_TYPES)] class AnotherTopLevelClass : R|TopLevelClass| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<TopLevelClass>
}
}
public? final? [ResolvedTo(TYPES)] class OuterClass : R|AnotherTopLevelClass| {
public? [ResolvedTo(TYPES)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public? final? [ResolvedTo(TYPES)] class NestedClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
STATUS:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(STATUS)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(CONTRACTS)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
LAZY_super<R|kotlin/Any|>
}
}
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(RAW_FIR)] annotations container
public open [ResolvedTo(STATUS)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
LAZY_super<R|kotlin/Any|>
}
}
public open [ResolvedTo(STATUS)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
LAZY_super<R|TopLevelClass|>
}
}
public final [ResolvedTo(STATUS)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(STATUS)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
LAZY_super<R|AnotherTopLevelClass|>
}
public final [ResolvedTo(BODY_RESOLVE)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
super<R|kotlin/Any|>()
}
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(IMPORTS)] nestedClass.kt
[ResolvedTo(BODY_RESOLVE)] annotations container
public open [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|TopLevelClass| {
super<R|kotlin/Any|>()
}
}
public open [ResolvedTo(BODY_RESOLVE)] class AnotherTopLevelClass : R|TopLevelClass| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnotherTopLevelClass] constructor(): R|AnotherTopLevelClass| {
super<R|TopLevelClass|>()
}
}
public final [ResolvedTo(BODY_RESOLVE)] class OuterClass : R|AnotherTopLevelClass| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OuterClass] constructor(): R|OuterClass| {
super<R|AnotherTopLevelClass|>()
}
public final [ResolvedTo(BODY_RESOLVE)] class NestedClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=NestedClass] constructor(): R|OuterClass.NestedClass| {
super<R|kotlin/Any|>()
}
}
}