diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.kt b/analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.kt new file mode 100644 index 00000000000..ee9f3438026 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.kt @@ -0,0 +1,5 @@ +// MEMBER_CLASS_FILTER: org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol +// MEMBER_NAME_FILTER: copy +package one + +data class DataClass(val i: Int, val b: Boolean) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.txt b/analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.txt new file mode 100644 index 00000000000..3426ca7bf65 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.txt @@ -0,0 +1,307 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun copy([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(COMPANION_GENERATION)] fun copy([ResolvedTo(COMPANION_GENERATION)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(COMPANION_GENERATION)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(SUPER_TYPES)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(SUPER_TYPES)] fun copy([ResolvedTo(SUPER_TYPES)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(SUPER_TYPES)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(TYPES)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=DataClass] constructor([ResolvedTo(TYPES)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(TYPES)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(TYPES)] fun copy([ResolvedTo(TYPES)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(TYPES)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun copy([ResolvedTo(EXPECT_ACTUAL_MATCHING)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(EXPECT_ACTUAL_MATCHING)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] fun copy([ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(CONTRACTS)] fun copy([ResolvedTo(CONTRACTS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(CONTRACTS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun copy([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] fun copy([ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(CONTRACTS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(CONTRACTS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(BODY_RESOLVE)] fun copy([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(BODY_RESOLVE)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] dataClassCopy.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final data [ResolvedTo(BODY_RESOLVE)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=DataClass] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(BODY_RESOLVE)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(BODY_RESOLVE)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(BODY_RESOLVE)] fun copy([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(BODY_RESOLVE)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt b/analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt new file mode 100644 index 00000000000..06a423775c9 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt @@ -0,0 +1,5 @@ +// MEMBER_CLASS_FILTER: org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol +// MEMBER_NAME_FILTER: component2 +package one + +data class DataClass(val i: Int, val b: Boolean) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.txt b/analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.txt new file mode 100644 index 00000000000..5ce5cda91e9 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.txt @@ -0,0 +1,307 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(RAW_FIR)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(RAW_FIR)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(COMPANION_GENERATION)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(SUPER_TYPES)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(RAW_FIR)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(SUPER_TYPES)] fun component2(): Boolean + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? data [ResolvedTo(TYPES)] class DataClass : R|kotlin/Any| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=DataClass] constructor([ResolvedTo(TYPES)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(TYPES)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val i: Int = R|/i| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val b: Boolean = R|/b| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean + + public final operator [ResolvedTo(RAW_FIR)] fun component1(): Int + + public final operator [ResolvedTo(TYPES)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(RAW_FIR)] fun copy([ResolvedTo(RAW_FIR)] i: Int = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(RAW_FIR)] b: Boolean = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(STATUS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(CONTRACTS)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(RAW_FIR)] annotations container + public final data [ResolvedTo(STATUS)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(STATUS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(BODY_RESOLVE)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(STATUS)] fun copy([ResolvedTo(STATUS)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(STATUS)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] dataComponent2.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final data [ResolvedTo(BODY_RESOLVE)] class DataClass : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=DataClass] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|/i| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=DataClass] get(): R|kotlin/Int| + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|/b| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean| + + public final operator [ResolvedTo(BODY_RESOLVE)] fun component1(): R|kotlin/Int| + + public final operator [ResolvedTo(BODY_RESOLVE)] fun component2(): R|kotlin/Boolean| + + public final [ResolvedTo(BODY_RESOLVE)] fun copy([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int| = this@R|one/DataClass|.R|one/DataClass.i|, [ResolvedTo(BODY_RESOLVE)] b: R|kotlin/Boolean| = this@R|one/DataClass|.R|one/DataClass.b|): R|one/DataClass| + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.kt b/analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.kt new file mode 100644 index 00000000000..1ee213a174d --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.kt @@ -0,0 +1,14 @@ +// MEMBER_CLASS_FILTER: org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol +package one + +class Boo + +interface Foo { + fun foo(b: Boo) +} + +class Usage(prop: Foo) : Foo by prop { + fun baz(s: String) { + + } +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.txt b/analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.txt new file mode 100644 index 00000000000..c236081da43 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.txt @@ -0,0 +1,336 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] b: Boo): R|kotlin/Unit| + + } + public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Usage] constructor([ResolvedTo(RAW_FIR)] prop: Foo): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(RAW_FIR)] field $$delegate_0: Foo = prop# + + public? final? [ResolvedTo(RAW_FIR)] fun baz([ResolvedTo(RAW_FIR)] s: String): R|kotlin/Unit| { LAZY_BLOCK } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] b: Boo): R|kotlin/Unit| + + } + public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Usage] constructor([ResolvedTo(RAW_FIR)] prop: Foo): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(RAW_FIR)] field $$delegate_0: Foo = prop# + + public? final? [ResolvedTo(RAW_FIR)] fun baz([ResolvedTo(RAW_FIR)] s: String): R|kotlin/Unit| { LAZY_BLOCK } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] b: Boo): R|kotlin/Unit| + + } + public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Usage] constructor([ResolvedTo(RAW_FIR)] prop: Foo): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] field $$delegate_0: Foo = prop# + + public? final? [ResolvedTo(RAW_FIR)] fun baz([ResolvedTo(RAW_FIR)] s: String): R|kotlin/Unit| { LAZY_BLOCK } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] b: Boo): R|kotlin/Unit| + + } + public? final? [ResolvedTo(RAW_FIR)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Usage] constructor([ResolvedTo(RAW_FIR)] prop: Foo): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(COMPANION_GENERATION)] field $$delegate_0: Foo = prop# + + public? final? [ResolvedTo(RAW_FIR)] fun baz([ResolvedTo(RAW_FIR)] s: String): R|kotlin/Unit| { LAZY_BLOCK } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface Foo : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] b: Boo): R|kotlin/Unit| + + } + public? final? [ResolvedTo(SUPER_TYPES)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Usage] constructor([ResolvedTo(RAW_FIR)] prop: Foo): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(SUPER_TYPES)] field $$delegate_0: Foo = prop# + + public? final? [ResolvedTo(RAW_FIR)] fun baz([ResolvedTo(RAW_FIR)] s: String): R|kotlin/Unit| { LAZY_BLOCK } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface Foo : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] b: Boo): R|kotlin/Unit| + + } + public? final? [ResolvedTo(TYPES)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=Usage] constructor([ResolvedTo(TYPES)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(TYPES)] field $$delegate_0: R|one/Foo| = prop# + + public? final? [ResolvedTo(RAW_FIR)] fun baz([ResolvedTo(RAW_FIR)] s: String): R|kotlin/Unit| { LAZY_BLOCK } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(STATUS)] field $$delegate_0: R|one/Foo| = prop# + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] field $$delegate_0: R|one/Foo| = prop# + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] field $$delegate_0: R|one/Foo| = prop# + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(CONTRACTS)] field $$delegate_0: R|one/Foo| = prop# + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] field $$delegate_0: R|one/Foo| = prop# + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] field $$delegate_0: R|one/Foo| = prop# + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class Boo : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Usage] constructor([ResolvedTo(STATUS)] prop: R|one/Foo|): R|one/Usage| { + LAZY_super<> + } + + private final [ResolvedTo(BODY_RESOLVE)] field $$delegate_0: R|one/Foo| = R|/prop| + + public final [ResolvedTo(STATUS)] fun baz([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] delegatedField.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final [ResolvedTo(BODY_RESOLVE)] class Boo : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Boo] constructor(): R|one/Boo| { + super() + } + + } + public abstract [ResolvedTo(BODY_RESOLVE)] interface Foo : R|kotlin/Any| { + public abstract [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] b: R|one/Boo|): R|kotlin/Unit| + + } + public final [ResolvedTo(BODY_RESOLVE)] [DelegateFieldsMapKey={0=FirFieldSymbol one/Usage.$$delegate_0}] class Usage : R|one/Foo| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Usage] constructor([ResolvedTo(BODY_RESOLVE)] prop: R|one/Foo|): R|one/Usage| { + super() + } + + private final [ResolvedTo(BODY_RESOLVE)] field $$delegate_0: R|one/Foo| = R|/prop| + + public final [ResolvedTo(BODY_RESOLVE)] fun baz([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit| { + } + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.kt b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.kt new file mode 100644 index 00000000000..5dce0b68710 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.kt @@ -0,0 +1,6 @@ +// MEMBER_NAME_FILTER: entries +package one + +enum class MyEnum { + ENTRY; +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.txt b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.txt new file mode 100644 index 00000000000..c8e8915d414 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.txt @@ -0,0 +1,279 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): R|kotlin/enums/EnumEntries| + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(COMPANION_GENERATION)] get(): R|kotlin/enums/EnumEntries| + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(SUPER_TYPES)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(SUPER_TYPES)] get(): R|kotlin/enums/EnumEntries| + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(TYPES)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(TYPES)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(TYPES)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(TYPES)] get(): R|kotlin/enums/EnumEntries| + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): R|kotlin/enums/EnumEntries| + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] get(): R|kotlin/enums/EnumEntries| + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(CONTRACTS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(CONTRACTS)] get(): R|kotlin/enums/EnumEntries| + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/enums/EnumEntries| + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] get(): R|kotlin/enums/EnumEntries| + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/enums/EnumEntries| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] enumEntries.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final [ResolvedTo(BODY_RESOLVE)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + super|>() + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/enums/EnumEntries| + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.kt b/analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.kt new file mode 100644 index 00000000000..f5036b55669 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.kt @@ -0,0 +1,6 @@ +// MEMBER_NAME_FILTER: valueOf +package one + +enum class MyEnum { + ENTRY; +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.txt b/analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.txt new file mode 100644 index 00000000000..8b7ef0bd280 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.txt @@ -0,0 +1,279 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(COMPANION_GENERATION)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(SUPER_TYPES)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(SUPER_TYPES)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(TYPES)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(TYPES)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(TYPES)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(TYPES)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(EXPECT_ACTUAL_MATCHING)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(CONTRACTS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(CONTRACTS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] enumValueOf.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final [ResolvedTo(BODY_RESOLVE)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + super|>() + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/enums/EnumEntries| + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumValues.kt b/analysis/low-level-api-fir/testdata/lazyResolve/enumValues.kt new file mode 100644 index 00000000000..c296c6a68e6 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumValues.kt @@ -0,0 +1,6 @@ +// MEMBER_NAME_FILTER: values +package one + +enum class MyEnum { + ENTRY; +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumValues.txt b/analysis/low-level-api-fir/testdata/lazyResolve/enumValues.txt new file mode 100644 index 00000000000..951b4728707 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumValues.txt @@ -0,0 +1,279 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(SUPER_TYPES)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(TYPES)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(TYPES)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(TYPES)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries| + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(CONTRACTS)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + LAZY_super|> + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(STATUS)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] enumValues.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final [ResolvedTo(BODY_RESOLVE)] enum class MyEnum : R|kotlin/Enum| { + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] constructor(): R|one/MyEnum| { + super|>() + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] enum entry ENTRY: R|one/MyEnum| + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun values(): R|kotlin/Array| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] fun valueOf([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/String|): R|one/MyEnum| { + } + + public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyEnum] val entries: R|kotlin/enums/EnumEntries| + public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/enums/EnumEntries| + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt b/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt new file mode 100644 index 00000000000..0fa06eb4097 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt @@ -0,0 +1,17 @@ +import kotlin.reflect.KProperty + +class LazyDelegate(val value: T) { + operator fun getValue(thisRef: Any?, property: KProperty<*>): T = value +} + +fun lazy(block: () -> T): LazyDelegate = LazyDelegate(block()) + +fun getAny(): Any? = null + +fun materialize(): Q = null!! + +class Test { + val resolveMe: String by lazy { + materialize() + } +} diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt b/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt new file mode 100644 index 00000000000..dc82ce4106c --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt @@ -0,0 +1,446 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] class Test : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] val resolveMe: Stringby LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] get(): { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] class Test : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] val resolveMe: Stringby LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] get(): { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] class Test : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val resolveMe: Stringby LAZY_EXPRESSION + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=Test] get(): { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] class Test : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public? final? [ResolvedTo(COMPANION_GENERATION)] val resolveMe: Stringby LAZY_EXPRESSION + public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=Test] get(): { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public? final? [ResolvedTo(SUPER_TYPES)] class Test : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public? final? [ResolvedTo(SUPER_TYPES)] val resolveMe: Stringby LAZY_EXPRESSION + public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=Test] get(): { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public? final? [ResolvedTo(TYPES)] class Test : R|kotlin/Any| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public? final? [ResolvedTo(TYPES)] val resolveMe: R|kotlin/String|by LAZY_EXPRESSION + public? [ResolvedTo(TYPES)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] val resolveMe: R|kotlin/String|by LAZY_EXPRESSION + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val resolveMe: R|kotlin/String|by LAZY_EXPRESSION + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] val resolveMe: R|kotlin/String|by LAZY_EXPRESSION + public [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public? final? [ResolvedTo(RAW_FIR)] class LazyDelegate<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/LazyDelegate.value] value: T): R|LazyDelegate| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val value: T = R|/value| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LazyDelegate] get(): T + + public? final? operator [ResolvedTo(RAW_FIR)] fun getValue([ResolvedTo(RAW_FIR)] thisRef: Any?, [ResolvedTo(RAW_FIR)] property: KProperty<*>): T { LAZY_BLOCK } + + } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> lazy([ResolvedTo(RAW_FIR)] block: ( () -> T )): LazyDelegate { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] Q> materialize(): Q { LAZY_BLOCK } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(CONTRACTS)] val resolveMe: R|kotlin/String|by lazy#( = [ResolvedTo(RAW_FIR)] lazy@fun .(): { + materialize#() + } + ) + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.getValue#(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] class LazyDelegate<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] [CorrespondingProperty=/LazyDelegate.value] value: R|T|): R|LazyDelegate| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val value: R|T| = R|/value| + public [ResolvedTo(STATUS)] [ContainingClassKey=LazyDelegate] get(): R|T| + + public final operator [ResolvedTo(CONTRACTS)] fun getValue([ResolvedTo(CONTRACTS)] thisRef: R|kotlin/Any?|, [ResolvedTo(CONTRACTS)] property: R|kotlin/reflect/KProperty<*>|): R|T| { + ^getValue value# + } + + } + public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] T> lazy([ResolvedTo(CONTRACTS)] block: R|() -> T|): R|LazyDelegate| { + ^lazy LazyDelegate#(block#()) + } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] Q> materialize(): R|Q| { + ^materialize Null(null)!! + } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val resolveMe: R|kotlin/String|by R|/lazy|( = [ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0] lazy@fun (): R|kotlin/String| { + ^ R|/materialize|() + } + ) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] class LazyDelegate<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] [CorrespondingProperty=/LazyDelegate.value] value: R|T|): R|LazyDelegate| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val value: R|T| = R|/value| + public [ResolvedTo(STATUS)] [ContainingClassKey=LazyDelegate] get(): R|T| + + public final operator [ResolvedTo(CONTRACTS)] fun getValue([ResolvedTo(CONTRACTS)] thisRef: R|kotlin/Any?|, [ResolvedTo(CONTRACTS)] property: R|kotlin/reflect/KProperty<*>|): R|T| { + ^getValue value# + } + + } + public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] T> lazy([ResolvedTo(CONTRACTS)] block: R|() -> T|): R|LazyDelegate| { + ^lazy LazyDelegate#(block#()) + } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] Q> materialize(): R|Q| { + ^materialize Null(null)!! + } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val resolveMe: R|kotlin/String|by R|/lazy|( = [ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0] lazy@fun (): R|kotlin/String| { + ^ R|/materialize|() + } + ) + public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(RAW_FIR)] annotations container + public final [ResolvedTo(STATUS)] class LazyDelegate<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] [CorrespondingProperty=/LazyDelegate.value] value: R|T|): R|LazyDelegate| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val value: R|T| = R|/value| + public [ResolvedTo(STATUS)] [ContainingClassKey=LazyDelegate] get(): R|T| + + public final operator [ResolvedTo(CONTRACTS)] fun getValue([ResolvedTo(CONTRACTS)] thisRef: R|kotlin/Any?|, [ResolvedTo(CONTRACTS)] property: R|kotlin/reflect/KProperty<*>|): R|T| { + ^getValue value# + } + + } + public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] T> lazy([ResolvedTo(CONTRACTS)] block: R|() -> T|): R|LazyDelegate| { + ^lazy LazyDelegate#(block#()) + } + public? final? [ResolvedTo(RAW_FIR)] fun getAny(): Any? { LAZY_BLOCK } + public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] Q> materialize(): R|Q| { + ^materialize Null(null)!! + } + public final [ResolvedTo(STATUS)] class Test : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Test] constructor(): R|Test| { + LAZY_super + } + + public final [ResolvedTo(BODY_RESOLVE)] val resolveMe: R|kotlin/String|by R|/lazy|( = [ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0] lazy@fun (): R|kotlin/String| { + ^ R|/materialize|() + } + ) + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + public final [ResolvedTo(BODY_RESOLVE)] class LazyDelegate<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=LazyDelegate] constructor<[ResolvedTo(BODY_RESOLVE)] T>([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/LazyDelegate.value] value: R|T|): R|LazyDelegate| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val value: R|T| = R|/value| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=LazyDelegate] get(): R|T| + + public final operator [ResolvedTo(BODY_RESOLVE)] fun getValue([ResolvedTo(BODY_RESOLVE)] thisRef: R|kotlin/Any?|, [ResolvedTo(BODY_RESOLVE)] property: R|kotlin/reflect/KProperty<*>|): R|T| { + ^getValue this@R|/LazyDelegate|.R|/LazyDelegate.value| + } + + } + public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T> lazy([ResolvedTo(BODY_RESOLVE)] block: R|() -> T|): R|LazyDelegate| { + ^lazy R|/LazyDelegate.LazyDelegate|(R|/block|.R|SubstitutionOverride|()) + } + public final [ResolvedTo(BODY_RESOLVE)] fun getAny(): R|kotlin/Any?| { + ^getAny Null(null) + } + public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] Q> materialize(): R|Q| { + ^materialize Null(null)!! + } + public final [ResolvedTo(BODY_RESOLVE)] class Test : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] constructor(): R|Test| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] val resolveMe: R|kotlin/String|by R|/lazy|( = [ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0] lazy@fun (): R|kotlin/String| { + ^ R|/materialize|() + } + ) + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + } + + } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt index f9255d3b0af..bd6972c9c5c 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt @@ -84,10 +84,15 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle } private fun chooseMemberDeclarationIfNeeded(symbol: FirBasedSymbol<*>, moduleStructure: TestModuleStructure): FirBasedSymbol<*> { - val memberClassFilter = moduleStructure.allDirectives.singleOrZeroValue(Directives.MEMBER_CLASS_FILTER) ?: return symbol + val directives = moduleStructure.allDirectives + val memberClassFilters = listOfNotNull( + directives.singleOrZeroValue(Directives.MEMBER_CLASS_FILTER), + directives.singleOrZeroValue(Directives.MEMBER_NAME_FILTER), + ).ifEmpty { return symbol } + val classSymbol = symbol as FirClassSymbol val declarations = classSymbol.declarationSymbols - val filteredSymbols = declarations.filter { memberClassFilter.isInstance(it) } + val filteredSymbols = declarations.filter { declaration -> memberClassFilters.all { it.invoke(declaration) } } return when (filteredSymbols.size) { 0 -> error("Empty result for:${declarations.joinToString("\n")}") 1 -> filteredSymbols.single() @@ -107,8 +112,17 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle } private object Directives : SimpleDirectivesContainer() { - val MEMBER_CLASS_FILTER: ValueDirective> by valueDirective("Choose member declaration by a declaration class") { - Class.forName(it) + val MEMBER_CLASS_FILTER: ValueDirective<(FirBasedSymbol<*>) -> Boolean> by valueDirective("Choose member declaration by a declaration class") { value -> + val clazz = Class.forName(value) + ({ symbol: FirBasedSymbol<*> -> + clazz.isInstance(symbol) + }) + } + + val MEMBER_NAME_FILTER: ValueDirective<(FirBasedSymbol<*>) -> Boolean> by valueDirective("Choose member declaration by a declaration name") { value -> + { symbol: FirBasedSymbol<*> -> + symbol.name() == value + } } } } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java index ef1d2c2808b..03815de2a28 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java @@ -84,18 +84,54 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testdata/lazyResolve/complexLocalHierarchy.kt"); } + @Test + @TestMetadata("dataClassCopy.kt") + public void testDataClassCopy() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.kt"); + } + + @Test + @TestMetadata("dataComponent2.kt") + public void testDataComponent2() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt"); + } + + @Test + @TestMetadata("delegatedField.kt") + public void testDelegatedField() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.kt"); + } + @Test @TestMetadata("delegates.kt") public void testDelegates() throws Exception { runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegates.kt"); } + @Test + @TestMetadata("enumEntries.kt") + public void testEnumEntries() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.kt"); + } + @Test @TestMetadata("enumEntry.kt") public void testEnumEntry() throws Exception { runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.kt"); } + @Test + @TestMetadata("enumValueOf.kt") + public void testEnumValueOf() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.kt"); + } + + @Test + @TestMetadata("enumValues.kt") + public void testEnumValues() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumValues.kt"); + } + @Test @TestMetadata("fakeOverride.kt") public void testFakeOverride() throws Exception { @@ -120,6 +156,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testdata/lazyResolve/lambdaAsSAMInterface.kt"); } + @Test + @TestMetadata("lazyProperty.kt") + public void testLazyProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt"); + } + @Test @TestMetadata("parameterOfNonLocalSetter.kt") public void testParameterOfNonLocalSetter() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java index 3e8ba487f56..e52d8562e33 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java @@ -84,18 +84,54 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testdata/lazyResolve/complexLocalHierarchy.kt"); } + @Test + @TestMetadata("dataClassCopy.kt") + public void testDataClassCopy() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/dataClassCopy.kt"); + } + + @Test + @TestMetadata("dataComponent2.kt") + public void testDataComponent2() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/dataComponent2.kt"); + } + + @Test + @TestMetadata("delegatedField.kt") + public void testDelegatedField() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegatedField.kt"); + } + @Test @TestMetadata("delegates.kt") public void testDelegates() throws Exception { runTest("analysis/low-level-api-fir/testdata/lazyResolve/delegates.kt"); } + @Test + @TestMetadata("enumEntries.kt") + public void testEnumEntries() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumEntries.kt"); + } + @Test @TestMetadata("enumEntry.kt") public void testEnumEntry() throws Exception { runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.kt"); } + @Test + @TestMetadata("enumValueOf.kt") + public void testEnumValueOf() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumValueOf.kt"); + } + + @Test + @TestMetadata("enumValues.kt") + public void testEnumValues() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumValues.kt"); + } + @Test @TestMetadata("fakeOverride.kt") public void testFakeOverride() throws Exception { @@ -120,6 +156,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testdata/lazyResolve/lambdaAsSAMInterface.kt"); } + @Test + @TestMetadata("lazyProperty.kt") + public void testLazyProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.kt"); + } + @Test @TestMetadata("parameterOfNonLocalSetter.kt") public void testParameterOfNonLocalSetter() throws Exception {