[LL FIR] resolve generated property before componentN

This is required to have stable resolution order to avoid concurrent
modifications.
Another point here – status phase logic for componentN function is
located in the corresponding property resolution

^KT-63042
This commit is contained in:
Dmitrii Gridin
2023-11-20 19:12:55 +01:00
committed by Space Team
parent 5fa516e010
commit a79cef08b5
25 changed files with 394 additions and 341 deletions
@@ -57,15 +57,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: Int = R|<local>/i|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=DataClass] get(): Boolean
public? final operator [ResolvedTo(RAW_FIR)] fun component1(): Int
@@ -83,15 +83,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=DataClass] constructor([ResolvedTo(COMPANION_GENERATION)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(COMPANION_GENERATION)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: Int = R|<local>/i|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean
public? final? [ResolvedTo(COMPANION_GENERATION)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=DataClass] get(): Boolean
public? final operator [ResolvedTo(RAW_FIR)] fun component1(): Int
@@ -109,15 +109,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=DataClass] constructor([ResolvedTo(SUPER_TYPES)] [CorrespondingProperty=one/DataClass.i] i: Int, [ResolvedTo(SUPER_TYPES)] [CorrespondingProperty=one/DataClass.b] b: Boolean): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: Int = R|<local>/i|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean
public? final? [ResolvedTo(SUPER_TYPES)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=DataClass] get(): Boolean
public? final operator [ResolvedTo(RAW_FIR)] fun component1(): Int
@@ -135,15 +135,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? data [ResolvedTo(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| {
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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: Int = R|<local>/i|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Int
public? final? [ResolvedTo(RAW_FIR)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: Boolean = R|<local>/b|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=DataClass] get(): Boolean
public? final? [ResolvedTo(TYPES)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public? [ResolvedTo(TYPES)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public? final operator [ResolvedTo(RAW_FIR)] fun component1(): Int
@@ -187,15 +187,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=DataClass] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|<local>/i|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int|
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int|
@@ -213,15 +213,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public [ResolvedTo(CONTRACTS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(CONTRACTS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(CONTRACTS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|<local>/i|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int|
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final [ResolvedTo(CONTRACTS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(CONTRACTS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int|
@@ -239,15 +239,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=DataClass] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|<local>/i|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int|
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int|
@@ -265,15 +265,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|<local>/i|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int|
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int|
@@ -291,15 +291,15 @@ FILE: [ResolvedTo(IMPORTS)] dataComponent2Script.kts
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
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| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=DataClass] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=one/DataClass.i] i: R|kotlin/Int|, [ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=one/DataClass.b] b: R|kotlin/Boolean|): R|one/DataClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component1, IsFromPrimaryConstructor=true] val i: R|kotlin/Int| = R|<local>/i|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Int|
public final [ResolvedTo(STATUS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(STATUS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] [ComponentFunctionSymbolKey=one/DataClass.component2, IsFromPrimaryConstructor=true] val b: R|kotlin/Boolean| = R|<local>/b|
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=DataClass] get(): R|kotlin/Boolean|
public final operator [ResolvedTo(STATUS)] fun component1(): R|kotlin/Int|
@@ -334,3 +334,4 @@ FILE: [ResolvedTo(BODY_RESOLVE)] dataComponent2Script.kts
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|
}