[LL FIR] fix lazy resolve of status for the members of the nested class

^KTIJ-23932 fixed
This commit is contained in:
Ilya Kirillov
2022-12-12 17:25:37 +01:00
committed by Space Team
parent 82a3ac830e
commit cd83fec078
12 changed files with 443 additions and 40 deletions
@@ -255,13 +255,13 @@ FILE: annotationParameters.kt
}
public final [SUPER_TYPES] class B : R|kotlin/Any| {
public? [SUPER_TYPES] [ContainingClassKey=B] constructor(): R|B| {
public [TYPES] [ContainingClassKey=B] constructor(): R|B| {
super<R|kotlin/Any|>()
}
@R|Anno|(X#.A#) public final [STATUS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
@Anno(X#.A#) public? final? [SUPER_TYPES] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
@R|Anno|(X#.A#) public final [TYPES] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
}
@@ -404,8 +404,8 @@ FILE: annotationParameters.kt
LAZY_super<R|kotlin/Any|>
}
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [SUPER_TYPES] [ContainingClassKey=Anno] get(): A.X
public final [TYPES] [IsFromPrimaryConstructor=true] val args: <ERROR TYPE REF: Symbol not found for A.X> = R|<local>/args|
public [TYPES] [ContainingClassKey=Anno] get(): <ERROR TYPE REF: Symbol not found for A.X>
}
public final [STATUS] class B : R|kotlin/Any| {
@@ -443,8 +443,8 @@ FILE: annotationParameters.kt
LAZY_super<R|kotlin/Any|>
}
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [SUPER_TYPES] [ContainingClassKey=Anno] get(): A.X
public final [TYPES] [IsFromPrimaryConstructor=true] val args: <ERROR TYPE REF: Symbol not found for A.X> = R|<local>/args|
public [TYPES] [ContainingClassKey=Anno] get(): <ERROR TYPE REF: Symbol not found for A.X>
}
public final [STATUS] class B : R|kotlin/Any| {
@@ -482,8 +482,8 @@ FILE: annotationParameters.kt
LAZY_super<R|kotlin/Any|>
}
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [SUPER_TYPES] [ContainingClassKey=Anno] get(): A.X
public final [TYPES] [IsFromPrimaryConstructor=true] val args: <ERROR TYPE REF: Symbol not found for A.X> = R|<local>/args|
public [TYPES] [ContainingClassKey=Anno] get(): <ERROR TYPE REF: Symbol not found for A.X>
}
public final [STATUS] class B : R|kotlin/Any| {
@@ -110,18 +110,18 @@ FILE: classMembers.kt
STATUS:
FILE: classMembers.kt
public final [SUPER_TYPES] class A : R|kotlin/Any| {
public? [SUPER_TYPES] [ContainingClassKey=A] constructor(): R|A| {
public [TYPES] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [STATUS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [SUPER_TYPES] val x: Int = LAZY_EXPRESSION
public? [SUPER_TYPES] [ContainingClassKey=A] get(): Int { LAZY_BLOCK }
public final [TYPES] val x: R|kotlin/Int| = LAZY_EXPRESSION
public [TYPES] [ContainingClassKey=A] get(): R|kotlin/Int| { LAZY_BLOCK }
public? final? [SUPER_TYPES] fun receive([SUPER_TYPES] value: String): R|kotlin/Unit| { LAZY_BLOCK }
public final [TYPES] fun receive([TYPES] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [SUPER_TYPES] fun functionWithLazyBody(): String { LAZY_BLOCK }
public final [TYPES] fun functionWithLazyBody(): R|kotlin/String| { LAZY_BLOCK }
}
@@ -86,12 +86,12 @@ FILE: functionInValueClass.kt
STATUS:
FILE: functionInValueClass.kt
@R|kotlin/jvm/JvmInline|() public final inline [SUPER_TYPES] [FirValueClassRepresentationKey=InlineClassRepresentation(underlyingPropertyName=value, underlyingType=kotlin/Int)] class Value : R|kotlin/Any| {
public? [TYPES] [ContainingClassKey=Value] constructor([TYPES] [CorrespondingProperty=/Value.value] value: R|kotlin/Int|): R|Value| {
public [TYPES] [ContainingClassKey=Value] constructor([TYPES] [CorrespondingProperty=/Value.value] value: R|kotlin/Int|): R|Value| {
LAZY_super<R|kotlin/Any|>
}
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val value: Int = R|<local>/value|
public? [SUPER_TYPES] [ContainingClassKey=Value] get(): Int
public final [TYPES] [IsFromPrimaryConstructor=true] val value: R|kotlin/Int| = R|<local>/value|
public [TYPES] [ContainingClassKey=Value] get(): R|kotlin/Int|
public final [STATUS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
@@ -0,0 +1,11 @@
interface OV {
val originalExpressions: A
class ResolveMe: OV {
override val originalExpressions: A
}
}
class A
@@ -0,0 +1,336 @@
RAW_FIR:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [RAW_FIR] interface OV : R|kotlin/Any| {
public? final? [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=OV] get(): A
public? final? [RAW_FIR] class ResolveMe : OV {
public? [RAW_FIR] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public? open? override [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=ResolveMe] get(): A
}
}
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
IMPORTS:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [RAW_FIR] interface OV : R|kotlin/Any| {
public? final? [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=OV] get(): A
public? final? [RAW_FIR] class ResolveMe : OV {
public? [RAW_FIR] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public? open? override [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=ResolveMe] get(): A
}
}
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [RAW_FIR] interface OV : R|kotlin/Any| {
public? final? [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=OV] get(): A
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class ResolveMe : OV {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public? open? override [COMPILER_REQUIRED_ANNOTATIONS] val originalExpressions: A
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=ResolveMe] get(): A
}
}
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
COMPANION_GENERATION:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [RAW_FIR] interface OV : R|kotlin/Any| {
public? final? [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=OV] get(): A
public? final? [COMPANION_GENERATION] class ResolveMe : OV {
public? [COMPANION_GENERATION] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public? open? override [COMPANION_GENERATION] val originalExpressions: A
public? [COMPANION_GENERATION] [ContainingClassKey=ResolveMe] get(): A
}
}
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
SUPER_TYPES:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface OV : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] val originalExpressions: A
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=OV] get(): A
public? final? [SUPER_TYPES] class ResolveMe : R|OV| {
public? [SUPER_TYPES] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public? open? override [SUPER_TYPES] val originalExpressions: A
public? [SUPER_TYPES] [ContainingClassKey=ResolveMe] get(): A
}
}
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
TYPES:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [SUPER_TYPES] interface OV : R|kotlin/Any| {
public? final? [SUPER_TYPES] val originalExpressions: A
public? [SUPER_TYPES] [ContainingClassKey=OV] get(): A
public? final? [TYPES] class ResolveMe : R|OV| {
public? [TYPES] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public? open? override [TYPES] val originalExpressions: R|A|
public? [TYPES] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
STATUS:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [SUPER_TYPES] interface OV : R|kotlin/Any| {
public abstract [TYPES] val originalExpressions: R|A|
public [TYPES] [ContainingClassKey=OV] get(): R|A|
public final [STATUS] class ResolveMe : R|OV| {
public [STATUS] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public final override [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [STATUS] interface OV : R|kotlin/Any| {
public abstract [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=OV] get(): R|A|
public final [ARGUMENTS_OF_ANNOTATIONS] class ResolveMe : R|OV| {
public [ARGUMENTS_OF_ANNOTATIONS] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public final override [ARGUMENTS_OF_ANNOTATIONS] val originalExpressions: R|A|
public [ARGUMENTS_OF_ANNOTATIONS] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
CONTRACTS:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [STATUS] interface OV : R|kotlin/Any| {
public abstract [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=OV] get(): R|A|
public final [CONTRACTS] class ResolveMe : R|OV| {
public [CONTRACTS] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public final override [CONTRACTS] val originalExpressions: R|A|
public [CONTRACTS] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [STATUS] interface OV : R|kotlin/Any| {
public abstract [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=OV] get(): R|A|
public final [IMPLICIT_TYPES_BODY_RESOLVE] class ResolveMe : R|OV| {
public [IMPLICIT_TYPES_BODY_RESOLVE] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public final override [IMPLICIT_TYPES_BODY_RESOLVE] val originalExpressions: R|A|
public [IMPLICIT_TYPES_BODY_RESOLVE] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [STATUS] interface OV : R|kotlin/Any| {
public abstract [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=OV] get(): R|A|
public final [ANNOTATIONS_ARGUMENTS_MAPPING] class ResolveMe : R|OV| {
public [ANNOTATIONS_ARGUMENTS_MAPPING] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public final override [ANNOTATIONS_ARGUMENTS_MAPPING] val originalExpressions: R|A|
public [ANNOTATIONS_ARGUMENTS_MAPPING] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
EXPECT_ACTUAL_MATCHING:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [STATUS] interface OV : R|kotlin/Any| {
public abstract [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=OV] get(): R|A|
public final [EXPECT_ACTUAL_MATCHING] class ResolveMe : R|OV| {
public [EXPECT_ACTUAL_MATCHING] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<<implicit>>()
}
public final override [EXPECT_ACTUAL_MATCHING] val originalExpressions: R|A|
public [EXPECT_ACTUAL_MATCHING] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
BODY_RESOLVE:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [STATUS] interface OV : R|kotlin/Any| {
public abstract [STATUS] val originalExpressions: R|A|
public [STATUS] [ContainingClassKey=OV] get(): R|A|
public final [BODY_RESOLVE] class ResolveMe : R|OV| {
public [BODY_RESOLVE] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<R|kotlin/Any|>()
}
public final override [BODY_RESOLVE] val originalExpressions: R|A|
public [BODY_RESOLVE] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
FILE RAW TO BODY:
FILE: nestedClassWithPropertiesOverrides.kt
public abstract [BODY_RESOLVE] interface OV : R|kotlin/Any| {
public abstract [BODY_RESOLVE] val originalExpressions: R|A|
public [BODY_RESOLVE] [ContainingClassKey=OV] get(): R|A|
public final [BODY_RESOLVE] class ResolveMe : R|OV| {
public [BODY_RESOLVE] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
super<R|kotlin/Any|>()
}
public final override [BODY_RESOLVE] val originalExpressions: R|A|
public [BODY_RESOLVE] [ContainingClassKey=ResolveMe] get(): R|A|
}
}
public final [BODY_RESOLVE] class A : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
}
@@ -1,3 +1,4 @@
RAW_FIR:
FILE: enumEntry.kt
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
@@ -157,19 +158,19 @@ FILE: enumEntry.kt
}
public final [SUPER_TYPES] enum class Foo : R|kotlin/Enum<Foo>| {
private [SUPER_TYPES] [ContainingClassKey=Foo] constructor(): R|Foo| {
private [TYPES] [ContainingClassKey=Foo] constructor(): R|Foo| {
super<R|kotlin/Enum<Foo>|>()
}
@R|Anno|() public final static [STATUS] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
public final static [SUPER_TYPES] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
public final static [TYPES] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
}
public final static [SUPER_TYPES] [ContainingClassKey=Foo] fun valueOf([SUPER_TYPES] value: R|kotlin/String|): R|Foo| {
public final static [TYPES] [ContainingClassKey=Foo] fun valueOf([TYPES] value: R|kotlin/String|): R|Foo| {
}
public final static [SUPER_TYPES] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
public [SUPER_TYPES] get(): R|kotlin/enums/EnumEntries<Foo>|
public final static [TYPES] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<Foo>|
}
@@ -80,7 +80,7 @@ FILE: parameterOfNonLocalSetter.kt
STATUS:
FILE: parameterOfNonLocalSetter.kt
public final [SUPER_TYPES] class X : R|kotlin/Any| {
public? [SUPER_TYPES] [ContainingClassKey=X] constructor(): R|X| {
public [TYPES] [ContainingClassKey=X] constructor(): R|X| {
super<R|kotlin/Any|>()
}
@@ -68,7 +68,7 @@ FILE: typeParameterOfNonLocalFunction.kt
STATUS:
FILE: typeParameterOfNonLocalFunction.kt
public final [SUPER_TYPES] class X : R|kotlin/Any| {
public? [SUPER_TYPES] [ContainingClassKey=X] constructor(): R|X| {
public [TYPES] [ContainingClassKey=X] constructor(): R|X| {
super<R|kotlin/Any|>()
}