From 72da40f97c2d26decbfa1e5e263b71dfc6413046 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sat, 6 Aug 2022 16:02:33 +0200 Subject: [PATCH] [LL FIR] update phase of type parameters on lazy resolve --- .../fir/transformers/LLFirLazyTransformer.kt | 9 +++++++++ .../functionWithImplicitType.fir.txt | 2 +- .../lambdaInImplicitFunBody.fir.txt | 4 ++-- .../lambdaInImplicitPropertyBody.fir.txt | 4 ++-- .../lambdasInWithBodyFunction.fir.txt | 4 ++-- .../functions/functionWithTypeParameters.txt | 18 +++++++++--------- .../properties/propertyWithTypeParameters.txt | 18 +++++++++--------- .../typeParameterOfNonLocalFunction.txt | 18 +++++++++--------- .../lazyResolve/typeParameterOfTopFunction.txt | 18 +++++++++--------- 9 files changed, 52 insertions(+), 43 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformer.kt index 3f1337fc478..4f9bedc965a 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformer.kt @@ -38,6 +38,15 @@ internal interface LLFirLazyTransformer { if (element.resolvePhase >= newPhase) return element.replaceResolvePhase(newPhase) + if (element is FirCallableDeclaration) { + element.typeParameters.forEach { typeParameter -> + // if it is not a type parameter of outer declaration + if (typeParameter is FirTypeParameter) { + updatePhaseForNonLocals(typeParameter, newPhase) + } + } + } + when (element) { is FirFunction -> { element.valueParameters.forEach { updatePhaseForNonLocals(it, newPhase) } diff --git a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/functionWithImplicitType.fir.txt b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/functionWithImplicitType.fir.txt index 1120a8b3e1b..66e6675e269 100644 --- a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/functionWithImplicitType.fir.txt +++ b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/functionWithImplicitType.fir.txt @@ -1,5 +1,5 @@ FILE: functionWithImplicitType.kt - public final [BODY_RESOLVE] fun checkSubtype([BODY_RESOLVE] t: R|T|): R|T| { + public final [BODY_RESOLVE] fun <[BODY_RESOLVE] T> checkSubtype([BODY_RESOLVE] t: R|T|): R|T| { ^checkSubtype R|/t| } public final [BODY_RESOLVE] val ab: R|kotlin/collections/List?| = R|/checkSubtype|?|>(Q|java/util/Collections|.R|java/util/Collections.emptyList|()) diff --git a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitFunBody.fir.txt b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitFunBody.fir.txt index 00135b43811..cf60a7cca55 100644 --- a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitFunBody.fir.txt +++ b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitFunBody.fir.txt @@ -1,8 +1,8 @@ FILE: lambdaInImplicitFunBody.kt - public final inline [BODY_RESOLVE] fun with([BODY_RESOLVE] receiver: R|T|, [BODY_RESOLVE] block: R|T.() -> R|): R|R| { + public final inline [BODY_RESOLVE] fun <[BODY_RESOLVE] T, [BODY_RESOLVE] R> with([BODY_RESOLVE] receiver: R|T|, [BODY_RESOLVE] block: R|T.() -> R|): R|R| { ^with R|/block|.R|SubstitutionOverride|(R|/receiver|) } - public final inline [BODY_RESOLVE] fun R|T|.let([BODY_RESOLVE] block: R|(T) -> R|): R|R| { + public final inline [BODY_RESOLVE] fun <[BODY_RESOLVE] T, [BODY_RESOLVE] R> R|T|.let([BODY_RESOLVE] block: R|(T) -> R|): R|R| { ^let R|/block|.R|SubstitutionOverride|(this@R|/let|) } public final [BODY_RESOLVE] class B : R|kotlin/Any| { diff --git a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitPropertyBody.fir.txt b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitPropertyBody.fir.txt index a8f42c9c511..3b6039db5e3 100644 --- a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitPropertyBody.fir.txt +++ b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdaInImplicitPropertyBody.fir.txt @@ -1,8 +1,8 @@ FILE: lambdaInImplicitPropertyBody.kt - public final inline [BODY_RESOLVE] fun with([BODY_RESOLVE] receiver: R|T|, [BODY_RESOLVE] block: R|T.() -> R|): R|R| { + public final inline [BODY_RESOLVE] fun <[BODY_RESOLVE] T, [BODY_RESOLVE] R> with([BODY_RESOLVE] receiver: R|T|, [BODY_RESOLVE] block: R|T.() -> R|): R|R| { ^with R|/block|.R|SubstitutionOverride|(R|/receiver|) } - public final inline [BODY_RESOLVE] fun R|T|.let([BODY_RESOLVE] block: R|(T) -> R|): R|R| { + public final inline [BODY_RESOLVE] fun <[BODY_RESOLVE] T, [BODY_RESOLVE] R> R|T|.let([BODY_RESOLVE] block: R|(T) -> R|): R|R| { ^let R|/block|.R|SubstitutionOverride|(this@R|/let|) } public final [BODY_RESOLVE] class B : R|kotlin/Any| { diff --git a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdasInWithBodyFunction.fir.txt b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdasInWithBodyFunction.fir.txt index d3ae574457b..364ce92fc89 100644 --- a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdasInWithBodyFunction.fir.txt +++ b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/lambdasInWithBodyFunction.fir.txt @@ -1,8 +1,8 @@ FILE: lambdasInWithBodyFunction.kt - public final inline [BODY_RESOLVE] fun with([BODY_RESOLVE] receiver: R|T|, [BODY_RESOLVE] block: R|T.() -> R|): R|R| { + public final inline [BODY_RESOLVE] fun <[BODY_RESOLVE] T, [BODY_RESOLVE] R> with([BODY_RESOLVE] receiver: R|T|, [BODY_RESOLVE] block: R|T.() -> R|): R|R| { ^with R|/block|.R|SubstitutionOverride|(R|/receiver|) } - public final inline [BODY_RESOLVE] fun R|T|.let([BODY_RESOLVE] block: R|(T) -> R|): R|R| { + public final inline [BODY_RESOLVE] fun <[BODY_RESOLVE] T, [BODY_RESOLVE] R> R|T|.let([BODY_RESOLVE] block: R|(T) -> R|): R|R| { ^let R|/block|.R|SubstitutionOverride|(this@R|/let|) } public final [BODY_RESOLVE] class A : R|kotlin/Any| { diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/functions/functionWithTypeParameters.txt b/analysis/low-level-api-fir/testdata/lazyResolve/functions/functionWithTypeParameters.txt index b3def837d9e..d13bb1be203 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/functions/functionWithTypeParameters.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/functions/functionWithTypeParameters.txt @@ -9,41 +9,41 @@ FILE: functionWithTypeParameters.kt COMPILER_REQUIRED_ANNOTATIONS: FILE: functionWithTypeParameters.kt - public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun <[RAW_FIR] T : Int, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun <[COMPILER_REQUIRED_ANNOTATIONS] T : Int, [COMPILER_REQUIRED_ANNOTATIONS] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } COMPANION_GENERATION: FILE: functionWithTypeParameters.kt - public? final? [COMPANION_GENERATION] fun <[RAW_FIR] T : Int, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [COMPANION_GENERATION] fun <[COMPANION_GENERATION] T : Int, [COMPANION_GENERATION] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } SUPER_TYPES: FILE: functionWithTypeParameters.kt - public? final? [SUPER_TYPES] fun <[RAW_FIR] T : Int, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [SUPER_TYPES] fun <[SUPER_TYPES] T : Int, [SUPER_TYPES] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } TYPES: FILE: functionWithTypeParameters.kt - public? final? [TYPES] fun <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [TYPES] fun <[TYPES] T : R|kotlin/Int|, [TYPES] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } STATUS: FILE: functionWithTypeParameters.kt - public final [STATUS] fun <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + public final [STATUS] fun <[STATUS] T : R|kotlin/Int|, [STATUS] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } ARGUMENTS_OF_ANNOTATIONS: FILE: functionWithTypeParameters.kt - public final [ARGUMENTS_OF_ANNOTATIONS] fun <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + public final [ARGUMENTS_OF_ANNOTATIONS] fun <[ARGUMENTS_OF_ANNOTATIONS] T : R|kotlin/Int|, [ARGUMENTS_OF_ANNOTATIONS] K> resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } CONTRACTS: FILE: functionWithTypeParameters.kt - public final [CONTRACTS] fun <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { + public final [CONTRACTS] fun <[CONTRACTS] T : R|kotlin/Int|, [CONTRACTS] K> resolveMe(): R|kotlin/Unit| { } IMPLICIT_TYPES_BODY_RESOLVE: FILE: functionWithTypeParameters.kt - public final [IMPLICIT_TYPES_BODY_RESOLVE] fun <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { + public final [IMPLICIT_TYPES_BODY_RESOLVE] fun <[IMPLICIT_TYPES_BODY_RESOLVE] T : R|kotlin/Int|, [IMPLICIT_TYPES_BODY_RESOLVE] K> resolveMe(): R|kotlin/Unit| { } EXPECT_ACTUAL_MATCHING: FILE: functionWithTypeParameters.kt - public final [EXPECT_ACTUAL_MATCHING] fun <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> resolveMe(): R|kotlin/Unit| { + public final [EXPECT_ACTUAL_MATCHING] fun <[EXPECT_ACTUAL_MATCHING] T : R|kotlin/Int|, [EXPECT_ACTUAL_MATCHING] K> resolveMe(): R|kotlin/Unit| { } BODY_RESOLVE: diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/properties/propertyWithTypeParameters.txt b/analysis/low-level-api-fir/testdata/lazyResolve/properties/propertyWithTypeParameters.txt index 1b3062fb61b..f43f03a5b82 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/properties/propertyWithTypeParameters.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/properties/propertyWithTypeParameters.txt @@ -11,51 +11,51 @@ FILE: propertyWithTypeParameters.kt COMPILER_REQUIRED_ANNOTATIONS: FILE: propertyWithTypeParameters.kt - public? final? [COMPILER_REQUIRED_ANNOTATIONS] val <[RAW_FIR] T : Int, [RAW_FIR] K> T.resolveMe: K + public? final? [COMPILER_REQUIRED_ANNOTATIONS] val <[COMPILER_REQUIRED_ANNOTATIONS] T : Int, [COMPILER_REQUIRED_ANNOTATIONS] K> T.resolveMe: K public? [COMPILER_REQUIRED_ANNOTATIONS] get(): K { LAZY_BLOCK } COMPANION_GENERATION: FILE: propertyWithTypeParameters.kt - public? final? [COMPANION_GENERATION] val <[RAW_FIR] T : Int, [RAW_FIR] K> T.resolveMe: K + public? final? [COMPANION_GENERATION] val <[COMPANION_GENERATION] T : Int, [COMPANION_GENERATION] K> T.resolveMe: K public? [COMPANION_GENERATION] get(): K { LAZY_BLOCK } SUPER_TYPES: FILE: propertyWithTypeParameters.kt - public? final? [SUPER_TYPES] val <[RAW_FIR] T : Int, [RAW_FIR] K> T.resolveMe: K + public? final? [SUPER_TYPES] val <[SUPER_TYPES] T : Int, [SUPER_TYPES] K> T.resolveMe: K public? [SUPER_TYPES] get(): K { LAZY_BLOCK } TYPES: FILE: propertyWithTypeParameters.kt - public? final? [TYPES] val <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> R|T|.resolveMe: R|K| + public? final? [TYPES] val <[TYPES] T : R|kotlin/Int|, [TYPES] K> R|T|.resolveMe: R|K| public? [TYPES] get(): R|K| { LAZY_BLOCK } STATUS: FILE: propertyWithTypeParameters.kt - public final [STATUS] val <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> R|T|.resolveMe: R|K| + public final [STATUS] val <[STATUS] T : R|kotlin/Int|, [STATUS] K> R|T|.resolveMe: R|K| public [STATUS] get(): R|K| { LAZY_BLOCK } ARGUMENTS_OF_ANNOTATIONS: FILE: propertyWithTypeParameters.kt - public final [ARGUMENTS_OF_ANNOTATIONS] val <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> R|T|.resolveMe: R|K| + public final [ARGUMENTS_OF_ANNOTATIONS] val <[ARGUMENTS_OF_ANNOTATIONS] T : R|kotlin/Int|, [ARGUMENTS_OF_ANNOTATIONS] K> R|T|.resolveMe: R|K| public [ARGUMENTS_OF_ANNOTATIONS] get(): R|K| { LAZY_BLOCK } CONTRACTS: FILE: propertyWithTypeParameters.kt - public final [CONTRACTS] val <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> R|T|.resolveMe: R|K| + public final [CONTRACTS] val <[CONTRACTS] T : R|kotlin/Int|, [CONTRACTS] K> R|T|.resolveMe: R|K| public [CONTRACTS] get(): R|K| { ^ TODO#() } IMPLICIT_TYPES_BODY_RESOLVE: FILE: propertyWithTypeParameters.kt - public final [IMPLICIT_TYPES_BODY_RESOLVE] val <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> R|T|.resolveMe: R|K| + public final [IMPLICIT_TYPES_BODY_RESOLVE] val <[IMPLICIT_TYPES_BODY_RESOLVE] T : R|kotlin/Int|, [IMPLICIT_TYPES_BODY_RESOLVE] K> R|T|.resolveMe: R|K| public [IMPLICIT_TYPES_BODY_RESOLVE] get(): R|K| { ^ TODO#() } EXPECT_ACTUAL_MATCHING: FILE: propertyWithTypeParameters.kt - public final [EXPECT_ACTUAL_MATCHING] val <[RAW_FIR] T : R|kotlin/Int|, [RAW_FIR] K> R|T|.resolveMe: R|K| + public final [EXPECT_ACTUAL_MATCHING] val <[EXPECT_ACTUAL_MATCHING] T : R|kotlin/Int|, [EXPECT_ACTUAL_MATCHING] K> R|T|.resolveMe: R|K| public [EXPECT_ACTUAL_MATCHING] get(): R|K| { ^ TODO#() } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt b/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt index 9695cb8d3ae..0f3480deb91 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt @@ -28,7 +28,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun <[COMPILER_REQUIRED_ANNOTATIONS] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } } @@ -39,7 +39,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public? final? [COMPANION_GENERATION] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [COMPANION_GENERATION] fun <[COMPANION_GENERATION] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } } @@ -50,7 +50,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public? final? [SUPER_TYPES] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [SUPER_TYPES] fun <[SUPER_TYPES] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } } @@ -61,7 +61,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public? final? [TYPES] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [TYPES] fun <[TYPES] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } } @@ -72,7 +72,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public final [STATUS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public final [STATUS] fun <[STATUS] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } } @@ -83,7 +83,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public final [ARGUMENTS_OF_ANNOTATIONS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public final [ARGUMENTS_OF_ANNOTATIONS] fun <[ARGUMENTS_OF_ANNOTATIONS] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } } @@ -94,7 +94,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public final [CONTRACTS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { + public final [CONTRACTS] fun <[CONTRACTS] resolveMe> ddd(): R|kotlin/Unit| { } } @@ -106,7 +106,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public final [IMPLICIT_TYPES_BODY_RESOLVE] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { + public final [IMPLICIT_TYPES_BODY_RESOLVE] fun <[IMPLICIT_TYPES_BODY_RESOLVE] resolveMe> ddd(): R|kotlin/Unit| { } } @@ -118,7 +118,7 @@ FILE: typeParameterOfNonLocalFunction.kt super() } - public final [EXPECT_ACTUAL_MATCHING] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { + public final [EXPECT_ACTUAL_MATCHING] fun <[EXPECT_ACTUAL_MATCHING] resolveMe> ddd(): R|kotlin/Unit| { } } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfTopFunction.txt b/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfTopFunction.txt index 6421f6a7a1c..0894e78173a 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfTopFunction.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfTopFunction.txt @@ -9,41 +9,41 @@ FILE: typeParameterOfTopFunction.kt COMPILER_REQUIRED_ANNOTATIONS: FILE: typeParameterOfTopFunction.kt - public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun <[COMPILER_REQUIRED_ANNOTATIONS] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } COMPANION_GENERATION: FILE: typeParameterOfTopFunction.kt - public? final? [COMPANION_GENERATION] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [COMPANION_GENERATION] fun <[COMPANION_GENERATION] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } SUPER_TYPES: FILE: typeParameterOfTopFunction.kt - public? final? [SUPER_TYPES] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [SUPER_TYPES] fun <[SUPER_TYPES] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } TYPES: FILE: typeParameterOfTopFunction.kt - public? final? [TYPES] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public? final? [TYPES] fun <[TYPES] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } STATUS: FILE: typeParameterOfTopFunction.kt - public final [STATUS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public final [STATUS] fun <[STATUS] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } ARGUMENTS_OF_ANNOTATIONS: FILE: typeParameterOfTopFunction.kt - public final [ARGUMENTS_OF_ANNOTATIONS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } + public final [ARGUMENTS_OF_ANNOTATIONS] fun <[ARGUMENTS_OF_ANNOTATIONS] resolveMe> ddd(): R|kotlin/Unit| { LAZY_BLOCK } CONTRACTS: FILE: typeParameterOfTopFunction.kt - public final [CONTRACTS] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { + public final [CONTRACTS] fun <[CONTRACTS] resolveMe> ddd(): R|kotlin/Unit| { } IMPLICIT_TYPES_BODY_RESOLVE: FILE: typeParameterOfTopFunction.kt - public final [IMPLICIT_TYPES_BODY_RESOLVE] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { + public final [IMPLICIT_TYPES_BODY_RESOLVE] fun <[IMPLICIT_TYPES_BODY_RESOLVE] resolveMe> ddd(): R|kotlin/Unit| { } EXPECT_ACTUAL_MATCHING: FILE: typeParameterOfTopFunction.kt - public final [EXPECT_ACTUAL_MATCHING] fun <[RAW_FIR] resolveMe> ddd(): R|kotlin/Unit| { + public final [EXPECT_ACTUAL_MATCHING] fun <[EXPECT_ACTUAL_MATCHING] resolveMe> ddd(): R|kotlin/Unit| { } BODY_RESOLVE: