[LL FIR] resolve class before constructor

This is required to have stable resolution order to avoid concurrent
modifications and correct resolution context.
This also fixes KT-63700 as a super call expands only during body
resolution in the case of secondary constructor

^KT-63042
^KT-63700 Fixed
This commit is contained in:
Dmitrii Gridin
2023-11-22 12:21:47 +01:00
committed by Space Team
parent e3d91741ca
commit 5183019cb8
207 changed files with 2011 additions and 1019 deletions
@@ -29,9 +29,9 @@ FILE: [ResolvedTo(IMPORTS)] contextReceiver.kt
}
context(R|test/Base|)
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Child| {
super<R|test/Base|>()
}
}
}
@@ -24,12 +24,12 @@ Tower Data Context:
FirValueParameterSymbol name: R|kotlin/String| = String(name)
FILE: [ResolvedTo(IMPORTS)] primaryConstructorParameter_initializerExpression.kt
public open [ResolvedTo(STATUS)] class Base : R|kotlin/Any| {
public open [ResolvedTo(ANNOTATION_ARGUMENTS)] class Base : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Base| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(STATUS)] class Nested : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Nested : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Base.Nested| {
super<R|kotlin/Any|>()
}
@@ -40,9 +40,9 @@ FILE: [ResolvedTo(IMPORTS)] primaryConstructorParameter_initializerExpression.kt
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor([ResolvedTo(BODY_RESOLVE)] name: R|kotlin/String| = String(name)): R|test/Child| {
super<R|test/Base|>()
}
}
}
@@ -24,12 +24,12 @@ Tower Data Context:
FirValueParameterSymbol name: R|kotlin/String|
FILE: [ResolvedTo(IMPORTS)] primaryConstructorParameter_typeRef.kt
public open [ResolvedTo(STATUS)] class Base : R|kotlin/Any| {
public open [ResolvedTo(ANNOTATION_ARGUMENTS)] class Base : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Base| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(STATUS)] class Nested : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Nested : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Base.Nested| {
super<R|kotlin/Any|>()
}
@@ -37,9 +37,9 @@ FILE: [ResolvedTo(IMPORTS)] primaryConstructorParameter_typeRef.kt
}
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor([ResolvedTo(BODY_RESOLVE)] name: R|kotlin/String|): R|test/Child| {
super<R|test/Base|>()
}
}
}
@@ -37,7 +37,7 @@ FILE: [ResolvedTo(IMPORTS)] superTypeCallArgumentsExpression.kt
}
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor([ResolvedTo(BODY_RESOLVE)] primaryConstructorParameter: R|test/Base.Nested|): R|test/Child| {
super<R|test/Base|>(R|<local>/primaryConstructorParameter|)
}
@@ -40,7 +40,7 @@ FILE: [ResolvedTo(IMPORTS)] superTypeCallArgumentsTypeRef.kt
public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] T> materialize(): R|T| {
^materialize TODO#()
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor([ResolvedTo(BODY_RESOLVE)] primaryConstructorParameter: R|test/Base.Nested|): R|test/Child| {
super<R|test/Base|>(R|test/materialize|<R|test/Base.Nested|>())
}
@@ -28,9 +28,9 @@ FILE: [ResolvedTo(IMPORTS)] superTypeCallee.kt
}
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Child| {
super<R|test/Base|>()
}
}
}
@@ -28,9 +28,9 @@ FILE: [ResolvedTo(IMPORTS)] superTypeCalleeGenerics.kt
}
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base<kotlin/Any>| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base<kotlin/Any>| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Child| {
super<R|test/Base<kotlin/Any>|>()
}
}
}
@@ -28,9 +28,9 @@ FILE: [ResolvedTo(IMPORTS)] superTypeRef.kt
}
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Child| {
super<R|test/Base|>()
}
}
}
@@ -28,9 +28,9 @@ FILE: [ResolvedTo(IMPORTS)] superTypeRefGenerics.kt
}
}
public final [ResolvedTo(STATUS)] class Child : R|test/Base<kotlin/Any>| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Child : R|test/Base<kotlin/Any>| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|test/Child| {
super<R|test/Base<kotlin/Any>|>()
}
}
}