[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
@@ -88,7 +88,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [CorrespondingProperty=/Sub.prop] @FieldAnnotation[Unresolved](LAZY_EXPRESSION) @CONSTRUCTOR_PARAMETER:Anno[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -123,7 +123,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPANION_GENERATION)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPANION_GENERATION)] [CorrespondingProperty=/Sub.prop] @FieldAnnotation[Unresolved](LAZY_EXPRESSION) @CONSTRUCTOR_PARAMETER:Anno[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -263,7 +263,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class Sub : R|kotlin/Any| {
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=Sub] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -298,7 +298,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(CONTRACTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(CONTRACTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(CONTRACTS)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -333,7 +333,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class Sub : R|kotlin/Any| {
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Sub] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -368,7 +368,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](s = <strcat>(String(param), R|/stringConstant|)) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -403,7 +403,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameter.kt
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Sub] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](s = <strcat>(String(param), R|/stringConstant|)) prop: R|kotlin/Int|): R|Sub| {
super<R|kotlin/Any|>()
}
@@ -57,7 +57,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [CorrespondingProperty=/Sub.prop] @ParameterAnnotation[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -81,7 +81,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPANION_GENERATION)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPANION_GENERATION)] [CorrespondingProperty=/Sub.prop] @ParameterAnnotation[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -177,7 +177,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class Sub : R|kotlin/Any| {
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=Sub] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -201,7 +201,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(CONTRACTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(CONTRACTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(CONTRACTS)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -225,7 +225,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class Sub : R|kotlin/Any| {
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Sub] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -249,7 +249,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public [ResolvedTo(STATUS)] [ContainingClassKey=ParameterAnnotation] get(): R|kotlin/Int|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](i = R|/konstant|) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -273,7 +273,7 @@ FILE: [ResolvedTo(IMPORTS)] constructorParameterWithImplicitParameterAnnotation.
public [ResolvedTo(STATUS)] [ContainingClassKey=ParameterAnnotation] get(): R|kotlin/Int|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Sub] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](i = R|/konstant|) prop: R|kotlin/Int|): R|Sub| {
super<R|kotlin/Any|>()
}
@@ -88,7 +88,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [CorrespondingProperty=/Sub.prop] @FieldAnnotation[Unresolved](LAZY_EXPRESSION) @CONSTRUCTOR_PARAMETER:Anno[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -123,7 +123,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPANION_GENERATION)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPANION_GENERATION)] [CorrespondingProperty=/Sub.prop] @FieldAnnotation[Unresolved](LAZY_EXPRESSION) @CONSTRUCTOR_PARAMETER:Anno[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -263,7 +263,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class Sub : R|kotlin/Any| {
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=Sub] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -298,7 +298,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(CONTRACTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(CONTRACTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(CONTRACTS)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -333,7 +333,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class Sub : R|kotlin/Any| {
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Sub] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -368,7 +368,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](s = <strcat>(String(param), R|/stringConstant|)) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -403,7 +403,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameter.kt
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=/Sub.prop] @CONSTRUCTOR_PARAMETER:R|Anno|[Types](s = <strcat>(String(param), R|/stringConstant|)) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -57,7 +57,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [CorrespondingProperty=/Sub.prop] @ParameterAnnotation[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -81,7 +81,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public? final? [ResolvedTo(RAW_FIR)] class Sub : R|kotlin/Any| {
public? final? [ResolvedTo(COMPANION_GENERATION)] class Sub : R|kotlin/Any| {
public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=Sub] constructor([ResolvedTo(COMPANION_GENERATION)] [CorrespondingProperty=/Sub.prop] @ParameterAnnotation[Unresolved](LAZY_EXPRESSION) prop: Int): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -177,7 +177,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class Sub : R|kotlin/Any| {
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=Sub] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -201,7 +201,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(CONTRACTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(CONTRACTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(CONTRACTS)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -225,7 +225,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ParameterAnnotation] get(): Int
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class Sub : R|kotlin/Any| {
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Sub] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](LAZY_EXPRESSION) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -249,7 +249,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public [ResolvedTo(STATUS)] [ContainingClassKey=ParameterAnnotation] get(): R|kotlin/Int|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](i = R|/konstant|) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}
@@ -273,7 +273,7 @@ FILE: [ResolvedTo(IMPORTS)] generatedPropertyFromParameterWithImplicitAnnotation
public [ResolvedTo(STATUS)] [ContainingClassKey=ParameterAnnotation] get(): R|kotlin/Int|
}
public final [ResolvedTo(STATUS)] class Sub : R|kotlin/Any| {
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Sub : R|kotlin/Any| {
public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Sub] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] [CorrespondingProperty=/Sub.prop] @R|ParameterAnnotation|[Types](i = R|/konstant|) prop: R|kotlin/Int|): R|Sub| {
LAZY_super<R|kotlin/Any|>
}