diff --git a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.dot b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.dot index 73bcaf4a32e..6ade94a6915 100644 --- a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.dot +++ b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.dot @@ -21,122 +21,102 @@ digraph exhaustiveWhenAndDNNType_kt { subgraph cluster_2 { color=red - 5 [label="Enter function values" style="filled" fillcolor=red]; - subgraph cluster_3 { - color=blue - 6 [label="Enter block"]; - 7 [label="Exit block"]; - } - 8 [label="Exit function values" style="filled" fillcolor=red]; + 5 [label="Enter class B" style="filled" fillcolor=red]; + 6 [label="Exit class B" style="filled" fillcolor=red]; + } + 5 -> {6} [color=green]; + + subgraph cluster_3 { + color=red + 7 [label="Enter function " style="filled" fillcolor=red]; + 8 [label="Delegated constructor call: super()"]; + 9 [label="Exit function " style="filled" fillcolor=red]; } - 5 -> {6}; - 6 -> {7}; 7 -> {8}; + 8 -> {9}; subgraph cluster_4 { color=red - 9 [label="Enter function valueOf" style="filled" fillcolor=red]; + 10 [label="Enter function takeB" style="filled" fillcolor=red]; subgraph cluster_5 { color=blue - 10 [label="Enter block"]; - 11 [label="Exit block"]; + 11 [label="Enter block"]; + 12 [label="Exit block"]; } - 12 [label="Exit function valueOf" style="filled" fillcolor=red]; + 13 [label="Exit function takeB" style="filled" fillcolor=red]; } - 9 -> {10}; 10 -> {11}; 11 -> {12}; + 12 -> {13}; subgraph cluster_6 { color=red - 13 [label="Enter class B" style="filled" fillcolor=red]; - 14 [label="Exit class B" style="filled" fillcolor=red]; - } - 13 -> {14} [color=green]; - - subgraph cluster_7 { - color=red - 15 [label="Enter function " style="filled" fillcolor=red]; - 16 [label="Delegated constructor call: super()"]; - 17 [label="Exit function " style="filled" fillcolor=red]; + 14 [label="Enter function test_1" style="filled" fillcolor=red]; + subgraph cluster_7 { + color=blue + 15 [label="Enter block"]; + 16 [label="Access qualifier /SomeEnum"]; + 17 [label="Access variable R|/SomeEnum.A1|"]; + 18 [label="Variable declaration: lval flag: R|SomeEnum|"]; + subgraph cluster_8 { + color=blue + 19 [label="Enter when"]; + 20 [label="Access variable R|/flag|"]; + 21 [label="Check not null: R|/flag|!!"]; + subgraph cluster_9 { + color=blue + 22 [label="Enter when branch condition "]; + 23 [label="Access qualifier /SomeEnum"]; + 24 [label="Access variable R|/SomeEnum.A1|"]; + 25 [label="Equality operator =="]; + 26 [label="Exit when branch condition"]; + } + subgraph cluster_10 { + color=blue + 27 [label="Enter when branch condition "]; + 28 [label="Access qualifier /SomeEnum"]; + 29 [label="Access variable R|/SomeEnum.A2|"]; + 30 [label="Equality operator =="]; + 31 [label="Exit when branch condition"]; + } + 32 [label="Enter when branch result"]; + subgraph cluster_11 { + color=blue + 33 [label="Enter block"]; + 34 [label="Function call: R|/B.B|()"]; + 35 [label="Exit block"]; + } + 36 [label="Exit when branch result"]; + 37 [label="Enter when branch result"]; + subgraph cluster_12 { + color=blue + 38 [label="Enter block"]; + 39 [label="Function call: R|/B.B|()"]; + 40 [label="Exit block"]; + } + 41 [label="Exit when branch result"]; + 42 [label="Exit when"]; + } + 43 [label="Variable declaration: lval b: R|B|"]; + 44 [label="Access variable R|/b|"]; + 45 [label="Function call: R|/takeB|(...)"]; + 46 [label="Exit block"]; + } + 47 [label="Exit function test_1" style="filled" fillcolor=red]; } + 14 -> {15}; 15 -> {16}; 16 -> {17}; - - subgraph cluster_8 { - color=red - 18 [label="Enter function takeB" style="filled" fillcolor=red]; - subgraph cluster_9 { - color=blue - 19 [label="Enter block"]; - 20 [label="Exit block"]; - } - 21 [label="Exit function takeB" style="filled" fillcolor=red]; - } + 17 -> {18}; 18 -> {19}; 19 -> {20}; 20 -> {21}; - - subgraph cluster_10 { - color=red - 22 [label="Enter function test_1" style="filled" fillcolor=red]; - subgraph cluster_11 { - color=blue - 23 [label="Enter block"]; - 24 [label="Access qualifier /SomeEnum"]; - 25 [label="Access variable R|/SomeEnum.A1|"]; - 26 [label="Variable declaration: lval flag: R|SomeEnum|"]; - subgraph cluster_12 { - color=blue - 27 [label="Enter when"]; - 28 [label="Access variable R|/flag|"]; - 29 [label="Check not null: R|/flag|!!"]; - subgraph cluster_13 { - color=blue - 30 [label="Enter when branch condition "]; - 31 [label="Access qualifier /SomeEnum"]; - 32 [label="Access variable R|/SomeEnum.A1|"]; - 33 [label="Equality operator =="]; - 34 [label="Exit when branch condition"]; - } - subgraph cluster_14 { - color=blue - 35 [label="Enter when branch condition "]; - 36 [label="Access qualifier /SomeEnum"]; - 37 [label="Access variable R|/SomeEnum.A2|"]; - 38 [label="Equality operator =="]; - 39 [label="Exit when branch condition"]; - } - 40 [label="Enter when branch result"]; - subgraph cluster_15 { - color=blue - 41 [label="Enter block"]; - 42 [label="Function call: R|/B.B|()"]; - 43 [label="Exit block"]; - } - 44 [label="Exit when branch result"]; - 45 [label="Enter when branch result"]; - subgraph cluster_16 { - color=blue - 46 [label="Enter block"]; - 47 [label="Function call: R|/B.B|()"]; - 48 [label="Exit block"]; - } - 49 [label="Exit when branch result"]; - 50 [label="Exit when"]; - } - 51 [label="Variable declaration: lval b: R|B|"]; - 52 [label="Access variable R|/b|"]; - 53 [label="Function call: R|/takeB|(...)"]; - 54 [label="Exit block"]; - } - 55 [label="Exit function test_1" style="filled" fillcolor=red]; - } + 21 -> {22}; 22 -> {23}; 23 -> {24}; 24 -> {25}; 25 -> {26}; - 26 -> {27}; + 26 -> {37 27}; 27 -> {28}; 28 -> {29}; 29 -> {30}; @@ -144,9 +124,9 @@ digraph exhaustiveWhenAndDNNType_kt { 31 -> {32}; 32 -> {33}; 33 -> {34}; - 34 -> {45 35}; + 34 -> {35}; 35 -> {36}; - 36 -> {37}; + 36 -> {42}; 37 -> {38}; 38 -> {39}; 39 -> {40}; @@ -154,10 +134,65 @@ digraph exhaustiveWhenAndDNNType_kt { 41 -> {42}; 42 -> {43}; 43 -> {44}; - 44 -> {50}; + 44 -> {45}; 45 -> {46}; 46 -> {47}; - 47 -> {48}; + + subgraph cluster_13 { + color=red + 48 [label="Enter function test_2" style="filled" fillcolor=red]; + subgraph cluster_14 { + color=blue + 49 [label="Enter block"]; + 50 [label="Access qualifier /SomeEnum"]; + 51 [label="Access variable R|/SomeEnum.A1|"]; + 52 [label="Variable declaration: lval flag: R|SomeEnum|"]; + subgraph cluster_15 { + color=blue + 53 [label="Enter when"]; + 54 [label="Access variable R|/flag|"]; + 55 [label="Check not null: R|/flag|!!"]; + subgraph cluster_16 { + color=blue + 56 [label="Enter when branch condition "]; + 57 [label="Access qualifier /SomeEnum"]; + 58 [label="Access variable R|/SomeEnum.A1|"]; + 59 [label="Equality operator =="]; + 60 [label="Exit when branch condition"]; + } + subgraph cluster_17 { + color=blue + 61 [label="Enter when branch condition "]; + 62 [label="Access qualifier /SomeEnum"]; + 63 [label="Access variable R|/SomeEnum.A2|"]; + 64 [label="Equality operator =="]; + 65 [label="Exit when branch condition"]; + } + 66 [label="Enter when branch result"]; + subgraph cluster_18 { + color=blue + 67 [label="Enter block"]; + 68 [label="Function call: R|/B.B|()"]; + 69 [label="Exit block"]; + } + 70 [label="Exit when branch result"]; + 71 [label="Enter when branch result"]; + subgraph cluster_19 { + color=blue + 72 [label="Enter block"]; + 73 [label="Function call: R|/B.B|()"]; + 74 [label="Exit block"]; + } + 75 [label="Exit when branch result"]; + 76 [label="Exit when"]; + } + 77 [label="Variable declaration: lval b: R|B|"]; + 78 [label="Access variable R|/b|"]; + 79 [label="Function call: R|/takeB|(...)"]; + 80 [label="Exit block"]; + } + 81 [label="Exit function test_2" style="filled" fillcolor=red]; + } 48 -> {49}; 49 -> {50}; 50 -> {51}; @@ -165,67 +200,12 @@ digraph exhaustiveWhenAndDNNType_kt { 52 -> {53}; 53 -> {54}; 54 -> {55}; - - subgraph cluster_17 { - color=red - 56 [label="Enter function test_2" style="filled" fillcolor=red]; - subgraph cluster_18 { - color=blue - 57 [label="Enter block"]; - 58 [label="Access qualifier /SomeEnum"]; - 59 [label="Access variable R|/SomeEnum.A1|"]; - 60 [label="Variable declaration: lval flag: R|SomeEnum|"]; - subgraph cluster_19 { - color=blue - 61 [label="Enter when"]; - 62 [label="Access variable R|/flag|"]; - 63 [label="Check not null: R|/flag|!!"]; - subgraph cluster_20 { - color=blue - 64 [label="Enter when branch condition "]; - 65 [label="Access qualifier /SomeEnum"]; - 66 [label="Access variable R|/SomeEnum.A1|"]; - 67 [label="Equality operator =="]; - 68 [label="Exit when branch condition"]; - } - subgraph cluster_21 { - color=blue - 69 [label="Enter when branch condition "]; - 70 [label="Access qualifier /SomeEnum"]; - 71 [label="Access variable R|/SomeEnum.A2|"]; - 72 [label="Equality operator =="]; - 73 [label="Exit when branch condition"]; - } - 74 [label="Enter when branch result"]; - subgraph cluster_22 { - color=blue - 75 [label="Enter block"]; - 76 [label="Function call: R|/B.B|()"]; - 77 [label="Exit block"]; - } - 78 [label="Exit when branch result"]; - 79 [label="Enter when branch result"]; - subgraph cluster_23 { - color=blue - 80 [label="Enter block"]; - 81 [label="Function call: R|/B.B|()"]; - 82 [label="Exit block"]; - } - 83 [label="Exit when branch result"]; - 84 [label="Exit when"]; - } - 85 [label="Variable declaration: lval b: R|B|"]; - 86 [label="Access variable R|/b|"]; - 87 [label="Function call: R|/takeB|(...)"]; - 88 [label="Exit block"]; - } - 89 [label="Exit function test_2" style="filled" fillcolor=red]; - } + 55 -> {56}; 56 -> {57}; 57 -> {58}; 58 -> {59}; 59 -> {60}; - 60 -> {61}; + 60 -> {71 61}; 61 -> {62}; 62 -> {63}; 63 -> {64}; @@ -233,9 +213,9 @@ digraph exhaustiveWhenAndDNNType_kt { 65 -> {66}; 66 -> {67}; 67 -> {68}; - 68 -> {79 69}; + 68 -> {69}; 69 -> {70}; - 70 -> {71}; + 70 -> {76}; 71 -> {72}; 72 -> {73}; 73 -> {74}; @@ -243,10 +223,64 @@ digraph exhaustiveWhenAndDNNType_kt { 75 -> {76}; 76 -> {77}; 77 -> {78}; - 78 -> {84}; + 78 -> {79}; 79 -> {80}; 80 -> {81}; - 81 -> {82}; + + subgraph cluster_20 { + color=red + 82 [label="Enter function test_3" style="filled" fillcolor=red]; + subgraph cluster_21 { + color=blue + 83 [label="Enter block"]; + 84 [label="Access qualifier /SomeEnum"]; + 85 [label="Access variable R|/SomeEnum.A1|"]; + 86 [label="Variable declaration: lval flag: R|SomeEnum|"]; + subgraph cluster_22 { + color=blue + 87 [label="Enter when"]; + 88 [label="Access variable R|/flag|"]; + subgraph cluster_23 { + color=blue + 89 [label="Enter when branch condition "]; + 90 [label="Access qualifier /SomeEnum"]; + 91 [label="Access variable R|/SomeEnum.A1|"]; + 92 [label="Equality operator =="]; + 93 [label="Exit when branch condition"]; + } + subgraph cluster_24 { + color=blue + 94 [label="Enter when branch condition "]; + 95 [label="Access qualifier /SomeEnum"]; + 96 [label="Access variable R|/SomeEnum.A2|"]; + 97 [label="Equality operator =="]; + 98 [label="Exit when branch condition"]; + } + 99 [label="Enter when branch result"]; + subgraph cluster_25 { + color=blue + 100 [label="Enter block"]; + 101 [label="Function call: R|/B.B|()"]; + 102 [label="Exit block"]; + } + 103 [label="Exit when branch result"]; + 104 [label="Enter when branch result"]; + subgraph cluster_26 { + color=blue + 105 [label="Enter block"]; + 106 [label="Function call: R|/B.B|()"]; + 107 [label="Exit block"]; + } + 108 [label="Exit when branch result"]; + 109 [label="Exit when"]; + } + 110 [label="Variable declaration: lval b: R|B|"]; + 111 [label="Access variable R|/b|"]; + 112 [label="Function call: R|/takeB|(...)"]; + 113 [label="Exit block"]; + } + 114 [label="Exit function test_3" style="filled" fillcolor=red]; + } 82 -> {83}; 83 -> {84}; 84 -> {85}; @@ -254,65 +288,11 @@ digraph exhaustiveWhenAndDNNType_kt { 86 -> {87}; 87 -> {88}; 88 -> {89}; - - subgraph cluster_24 { - color=red - 90 [label="Enter function test_3" style="filled" fillcolor=red]; - subgraph cluster_25 { - color=blue - 91 [label="Enter block"]; - 92 [label="Access qualifier /SomeEnum"]; - 93 [label="Access variable R|/SomeEnum.A1|"]; - 94 [label="Variable declaration: lval flag: R|SomeEnum|"]; - subgraph cluster_26 { - color=blue - 95 [label="Enter when"]; - 96 [label="Access variable R|/flag|"]; - subgraph cluster_27 { - color=blue - 97 [label="Enter when branch condition "]; - 98 [label="Access qualifier /SomeEnum"]; - 99 [label="Access variable R|/SomeEnum.A1|"]; - 100 [label="Equality operator =="]; - 101 [label="Exit when branch condition"]; - } - subgraph cluster_28 { - color=blue - 102 [label="Enter when branch condition "]; - 103 [label="Access qualifier /SomeEnum"]; - 104 [label="Access variable R|/SomeEnum.A2|"]; - 105 [label="Equality operator =="]; - 106 [label="Exit when branch condition"]; - } - 107 [label="Enter when branch result"]; - subgraph cluster_29 { - color=blue - 108 [label="Enter block"]; - 109 [label="Function call: R|/B.B|()"]; - 110 [label="Exit block"]; - } - 111 [label="Exit when branch result"]; - 112 [label="Enter when branch result"]; - subgraph cluster_30 { - color=blue - 113 [label="Enter block"]; - 114 [label="Function call: R|/B.B|()"]; - 115 [label="Exit block"]; - } - 116 [label="Exit when branch result"]; - 117 [label="Exit when"]; - } - 118 [label="Variable declaration: lval b: R|B|"]; - 119 [label="Access variable R|/b|"]; - 120 [label="Function call: R|/takeB|(...)"]; - 121 [label="Exit block"]; - } - 122 [label="Exit function test_3" style="filled" fillcolor=red]; - } + 89 -> {90}; 90 -> {91}; 91 -> {92}; 92 -> {93}; - 93 -> {94}; + 93 -> {104 94}; 94 -> {95}; 95 -> {96}; 96 -> {97}; @@ -320,9 +300,9 @@ digraph exhaustiveWhenAndDNNType_kt { 98 -> {99}; 99 -> {100}; 100 -> {101}; - 101 -> {112 102}; + 101 -> {102}; 102 -> {103}; - 103 -> {104}; + 103 -> {109}; 104 -> {105}; 105 -> {106}; 106 -> {107}; @@ -330,16 +310,8 @@ digraph exhaustiveWhenAndDNNType_kt { 108 -> {109}; 109 -> {110}; 110 -> {111}; - 111 -> {117}; + 111 -> {112}; 112 -> {113}; 113 -> {114}; - 114 -> {115}; - 115 -> {116}; - 116 -> {117}; - 117 -> {118}; - 118 -> {119}; - 119 -> {120}; - 120 -> {121}; - 121 -> {122}; } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt index 6b0bda5a57f..f0b6e9ac5a9 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/LowLevelFirApiFacade.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.api import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.renderWithType import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo import org.jetbrains.kotlin.idea.caches.project.getModuleInfo import org.jetbrains.kotlin.idea.fir.low.level.api.FirIdeResolveStateService @@ -60,6 +61,24 @@ inline fun KtDeclaration.withFirDeclaration( return action(resolvedDeclaration) } +/** + * Creates [FirDeclaration] by [KtDeclaration] and executes an [action] on it + * [FirDeclaration] passed to [action] will be resolved at least to [resolveType] when executing [action] on it + * + * [FirDeclaration] passed to [action] should not be leaked outside [action] lambda + * Otherwise, some threading problems may arise, + */ +@OptIn(InternalForInline::class) +inline fun KtDeclaration.withFirDeclaration( + resolveState: FirModuleResolveState, + resolveType: ResolveType = ResolveType.NoResolve, + action: (FirDeclaration) -> R +): R { + val firDeclaration = resolveState.findSourceFirDeclaration(this) + firDeclaration.resolvedFirToType(resolveType, resolveState) + return action(firDeclaration) +} + /** * Creates [FirDeclaration] by [KtDeclaration] and executes an [action] on it * [FirDeclaration] passed to [action] will be resolved at least to [phase] when executing [action] on it diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt index a0932ad3922..56e62a988a5 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt @@ -37,7 +37,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( ResolveType.NoResolve -> return ResolveType.CallableReturnType -> { require(firDeclaration is FirCallableDeclaration<*>) { - "CallableReturn type cannot be applied to ${firDeclaration::class.qualifiedName}" + "CallableReturnType type cannot be applied to ${firDeclaration::class.qualifiedName}" } val stopAheadOfPhase = { declaration: FirDeclaration -> declaration is FirCallableDeclaration<*> && declaration.returnTypeRef is FirResolvedTypeRef @@ -53,7 +53,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( } ResolveType.BodyResolveWithChildren, ResolveType.CallableBodyResolve -> { require(firDeclaration is FirCallableDeclaration<*> || toResolveType != ResolveType.CallableBodyResolve) { - "CallableReturn type cannot be applied to ${firDeclaration::class.qualifiedName}" + "BodyResolveWithChildren and CallableBodyResolve types cannot be applied to ${firDeclaration::class.qualifiedName}" } lazyResolveDeclaration( firDeclarationToResolve = firDeclaration, @@ -85,7 +85,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( } ResolveType.ClassSuperTypes -> { require(firDeclaration is FirClassLikeDeclaration<*>) { - "CallableReturn type cannot be applied to ${firDeclaration::class.qualifiedName}" + "ClassSuperTypes type cannot be applied to ${firDeclaration::class.qualifiedName}" } lazyResolveDeclaration( firDeclarationToResolve = firDeclaration, @@ -97,7 +97,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( } ResolveType.CallableContracts -> { require(firDeclaration is FirCallableDeclaration<*>) { - "CallableReturn type cannot be applied to ${firDeclaration::class.qualifiedName}" + "CallableContracts type cannot be applied to ${firDeclaration::class.qualifiedName}" } lazyResolveDeclaration( firDeclarationToResolve = firDeclaration, @@ -109,7 +109,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( } ResolveType.DeclarationStatus -> { require(firDeclaration !is FirFile) { - "CallableReturn type cannot be applied to ${firDeclaration::class.qualifiedName}" + "DeclarationStatus type cannot be applied to ${firDeclaration::class.qualifiedName}" } lazyResolveDeclaration( firDeclarationToResolve = firDeclaration, @@ -121,7 +121,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( } ResolveType.ValueParametersTypes, ResolveType.TypeParametersTypes -> { require(firDeclaration !is FirFile) { - "CallableReturn type cannot be applied to ${firDeclaration::class.qualifiedName}" + "ValueParametersTypes and TypeParametersTypes types cannot be applied to ${firDeclaration::class.qualifiedName}" } lazyResolveDeclaration( firDeclarationToResolve = firDeclaration, diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.kt new file mode 100644 index 00000000000..c7bccca8a31 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.kt @@ -0,0 +1,6 @@ +@file:Suppress("1") + +@Suppress("2") +fun resolveMe() { + +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.txt new file mode 100644 index 00000000000..9fe3622e4d9 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.txt @@ -0,0 +1,113 @@ +RAW_FIR: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @Suppress(String(2)) public? final? fun resolveMe(): R|kotlin/Unit| { + } + +IMPORTS: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @Suppress(String(2)) public? final? fun resolveMe(): R|kotlin/Unit| { + } + +SUPER_TYPES: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @Suppress(String(2)) public? final? fun resolveMe(): R|kotlin/Unit| { + } + +TYPES: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + } + +STATUS: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + } + +CONTRACTS: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +BODY_RESOLVE: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(vararg(String(2))) public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +NoResolve: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @Suppress(String(2)) public? final? fun resolveMe(): R|kotlin/Unit| { + } + +BodyResolveWithChildren: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(vararg(String(2))) public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +CallableBodyResolve: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(vararg(String(2))) public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +CallableReturnType: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @Suppress(String(2)) public? final? fun resolveMe(): R|kotlin/Unit| { + } + +AnnotationType: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + } + +AnnotationsArguments: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(vararg(String(2))) public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +CallableContracts: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + } + +DeclarationStatus: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + } + +ValueParametersTypes: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + } + +TypeParametersTypes: +FILE: annotations.kt + @FILE:Suppress(String(1)) + @R|kotlin/Suppress|(String(2)) public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + } + +FILE RAW TO BODY: +FILE: annotations.kt + @FILE:R|kotlin/Suppress|(vararg(String(1))) + @R|kotlin/Suppress|(vararg(String(2))) public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt index 069164f73fa..b69f1b71f1f 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt @@ -1,18 +1,474 @@ +RAW_FIR: FILE: classMembers.kt - public final [STATUS] class A : R|kotlin/Any| { - public [STATUS] constructor(): R|A| { + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { super() } - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +IMPORTS: +FILE: classMembers.kt + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +SUPER_TYPES: +FILE: classMembers.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +TYPES: +FILE: classMembers.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +STATUS: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +CONTRACTS: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +BODY_RESOLVE: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { this@R|/A|.R|/A.receive|(this@R|/A|.R|/A.functionWithLazyBody|()) } - public final [STATUS] val x: R|kotlin/Int| = LAZY_EXPRESSION - [STATUS] public get(): R|kotlin/Int| { LAZY_BLOCK } + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } - public final [STATUS] fun receive([STATUS] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } - public final [STATUS] fun functionWithLazyBody(): R|kotlin/String| { LAZY_BLOCK } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + + } + +NoResolve: +FILE: classMembers.kt + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +BodyResolveWithChildren: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + this@R|/A|.R|/A.receive|(this@R|/A|.R|/A.functionWithLazyBody|()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + + } + +CallableBodyResolve: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + this@R|/A|.R|/A.receive|(this@R|/A|.R|/A.functionWithLazyBody|()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + + } + +CallableReturnType: +FILE: classMembers.kt + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +AnnotationType: +FILE: classMembers.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +AnnotationsArguments: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + this@R|/A|.R|/A.receive|(this@R|/A|.R|/A.functionWithLazyBody|()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + + } + +CallableContracts: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +DeclarationStatus: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +ValueParametersTypes: +FILE: classMembers.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +TypeParametersTypes: +FILE: classMembers.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + + public? final? val x: Int = IntegerLiteral(10) + [ContainingClassKey=A] public? get(): Int { + ^ field# + } + + public? final? fun receive(value: String): R|kotlin/Unit| { + } + + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + + } + +FILE RAW TO BODY: +FILE: classMembers.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final fun resolveMe(): R|kotlin/Unit| { + this@R|/A|.R|/A.receive|(this@R|/A|.R|/A.functionWithLazyBody|()) + } + + public final [IsReferredViaField=true] val x: R|kotlin/Int| = Int(10) + [ContainingClassKey=A] public get(): R|kotlin/Int| { + ^ this@R|/A|.F|/A.x| + } + + public final fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + + public final fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.txt index 53b5a0096ad..c385ceef268 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.txt @@ -1,45 +1,911 @@ +RAW_FIR: FILE: delegates.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +IMPORTS: +FILE: delegates.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +SUPER_TYPES: +FILE: delegates.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +TYPES: +FILE: delegates.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +STATUS: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +CONTRACTS: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +BODY_RESOLVE: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { R|/receive|(R|/valueWithExplicitType|) R|/receive|(R|/valueWithImplicitType|) R|/variableWithExplicitType| = Int(10) R|/variableWithImplicitType| = Int(10) } - public final [STATUS] fun receive([STATUS] value: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK } - public final [BODY_RESOLVE] val delegate: R|kotlin/properties/ReadWriteProperty| = object : R|kotlin/properties/ReadWriteProperty| { - private [BODY_RESOLVE] constructor(): R|| { + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val delegate: R|kotlin/properties/ReadWriteProperty| = object : R|kotlin/properties/ReadWriteProperty| { + private [ContainingClassKey=] constructor(): R|| { super() } - public final override operator [BODY_RESOLVE] fun getValue([BODY_RESOLVE] thisRef: R|kotlin/Any?|, [BODY_RESOLVE] property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| { + public final override operator fun getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| { ^getValue Int(1) } - public final override operator [BODY_RESOLVE] fun setValue([BODY_RESOLVE] thisRef: R|kotlin/Any?|, [BODY_RESOLVE] property: R|kotlin/reflect/KProperty<*>|, [BODY_RESOLVE] value: R|kotlin/Int|): R|kotlin/Unit| { + public final override operator fun setValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|, value: R|kotlin/Int|): R|kotlin/Unit| { } } - [BODY_RESOLVE] public get(): R|kotlin/properties/ReadWriteProperty| - public final [STATUS] val valueWithExplicitType: R|kotlin/Int|by LAZY_EXPRESSION - [STATUS] public get(): { + public get(): R|kotlin/properties/ReadWriteProperty| + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithExplicitType: R|kotlin/Int|by delegate# + public get(): { ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) } - public final [BODY_RESOLVE] val valueWithImplicitType: R|kotlin/Int|by R|/delegate| - [BODY_RESOLVE] public get(): R|kotlin/Int| { + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { ^ D|/valueWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/valueWithImplicitType|) } - public final [STATUS] var variableWithExplicitType: R|kotlin/Int|by LAZY_EXPRESSION - [STATUS] public get(): { + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithExplicitType: R|kotlin/Int|by delegate# + public get(): { ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) } - [STATUS] public set([RAW_FIR] : ): R|kotlin/Unit| { + public set(: ): R|kotlin/Unit| { D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) } - public final [BODY_RESOLVE] var variableWithImplicitType: R|kotlin/Int|by R|/delegate| - [BODY_RESOLVE] public get(): R|kotlin/Int| { + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { ^ D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|) } - [BODY_RESOLVE] public set([BODY_RESOLVE] : R|kotlin/Int|): R|kotlin/Unit| { + public set(: R|kotlin/Int|): R|kotlin/Unit| { + D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +NoResolve: +FILE: delegates.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +BodyResolveWithChildren: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/valueWithExplicitType|) + R|/receive|(R|/valueWithImplicitType|) + R|/variableWithExplicitType| = Int(10) + R|/variableWithImplicitType| = Int(10) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val delegate: R|kotlin/properties/ReadWriteProperty| = object : R|kotlin/properties/ReadWriteProperty| { + private [ContainingClassKey=] constructor(): R|| { + super() + } + + public final override operator fun getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| { + ^getValue Int(1) + } + + public final override operator fun setValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|, value: R|kotlin/Int|): R|kotlin/Unit| { + } + + } + + public get(): R|kotlin/properties/ReadWriteProperty| + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithExplicitType: R|kotlin/Int|by delegate# + public get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/valueWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/valueWithImplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithExplicitType: R|kotlin/Int|by delegate# + public get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|) + } + public set(: R|kotlin/Int|): R|kotlin/Unit| { + D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +CallableBodyResolve: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/valueWithExplicitType|) + R|/receive|(R|/valueWithImplicitType|) + R|/variableWithExplicitType| = Int(10) + R|/variableWithImplicitType| = Int(10) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val delegate: R|kotlin/properties/ReadWriteProperty| = object : R|kotlin/properties/ReadWriteProperty| { + private [ContainingClassKey=] constructor(): R|| { + super() + } + + public final override operator fun getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| { + ^getValue Int(1) + } + + public final override operator fun setValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|, value: R|kotlin/Int|): R|kotlin/Unit| { + } + + } + + public get(): R|kotlin/properties/ReadWriteProperty| + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithExplicitType: R|kotlin/Int|by delegate# + public get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/valueWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/valueWithImplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithExplicitType: R|kotlin/Int|by delegate# + public get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|) + } + public set(: R|kotlin/Int|): R|kotlin/Unit| { + D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +CallableReturnType: +FILE: delegates.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +AnnotationType: +FILE: delegates.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +AnnotationsArguments: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/valueWithExplicitType|) + R|/receive|(R|/valueWithImplicitType|) + R|/variableWithExplicitType| = Int(10) + R|/variableWithImplicitType| = Int(10) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val delegate: R|kotlin/properties/ReadWriteProperty| = object : R|kotlin/properties/ReadWriteProperty| { + private [ContainingClassKey=] constructor(): R|| { + super() + } + + public final override operator fun getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| { + ^getValue Int(1) + } + + public final override operator fun setValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|, value: R|kotlin/Int|): R|kotlin/Unit| { + } + + } + + public get(): R|kotlin/properties/ReadWriteProperty| + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithExplicitType: R|kotlin/Int|by delegate# + public get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val valueWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/valueWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/valueWithImplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithExplicitType: R|kotlin/Int|by delegate# + public get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var variableWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|) + } + public set(: R|kotlin/Int|): R|kotlin/Unit| { + D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +CallableContracts: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +DeclarationStatus: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +ValueParametersTypes: +FILE: delegates.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +TypeParametersTypes: +FILE: delegates.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(valueWithExplicitType#) + receive#(valueWithImplicitType#) + variableWithExplicitType# = IntegerLiteral(10) + variableWithImplicitType# = IntegerLiteral(10) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val delegate: = object : ReadWriteProperty { + private [ContainingClassKey=] constructor(): R|| { + super<>() + } + + public? open? override fun getValue(thisRef: Any?, property: KProperty<*>): Int { + ^getValue IntegerLiteral(1) + } + + public? open? override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int): R|kotlin/Unit| { + } + + } + + public? get(): + public? final? val valueWithExplicitType: Intby delegate# + public? get(): { + ^ D|/valueWithExplicitType|.getValue#(Null(null), ::R|/valueWithExplicitType|) + } + public? final? val valueWithImplicitType: by delegate# + public? get(): { + ^ D|/valueWithImplicitType|.getValue#(Null(null), ::R|/valueWithImplicitType|) + } + public? final? var variableWithExplicitType: Intby delegate# + public? get(): { + ^ D|/variableWithExplicitType|.getValue#(Null(null), ::R|/variableWithExplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithExplicitType|.setValue#(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public? final? var variableWithImplicitType: by delegate# + public? get(): { + ^ D|/variableWithImplicitType|.getValue#(Null(null), ::R|/variableWithImplicitType|) + } + public? set(: ): R|kotlin/Unit| { + D|/variableWithImplicitType|.setValue#(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) + } + +FILE RAW TO BODY: +FILE: delegates.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/valueWithExplicitType|) + R|/receive|(R|/valueWithImplicitType|) + R|/variableWithExplicitType| = Int(10) + R|/variableWithImplicitType| = Int(10) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] val delegate: R|kotlin/properties/ReadWriteProperty| = object : R|kotlin/properties/ReadWriteProperty| { + private [ContainingClassKey=] constructor(): R|| { + super() + } + + public final override operator fun getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|kotlin/Int| { + ^getValue Int(1) + } + + public final override operator fun setValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|, value: R|kotlin/Int|): R|kotlin/Unit| { + } + + } + + public get(): R|kotlin/properties/ReadWriteProperty| + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] val valueWithExplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/valueWithExplicitType|.R|SubstitutionOverride|(Null(null), ::R|/valueWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] val valueWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/valueWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/valueWithImplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var variableWithExplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/variableWithExplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithExplicitType|) + } + public set(: R|kotlin/Int|): R|kotlin/Unit| { + D|/variableWithExplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithExplicitType|, R|/variableWithExplicitType|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var variableWithImplicitType: R|kotlin/Int|by R|/delegate| + public get(): R|kotlin/Int| { + ^ D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|) + } + public set(: R|kotlin/Int|): R|kotlin/Unit| { D|/variableWithImplicitType|.R|SubstitutionOverride|(Null(null), ::R|/variableWithImplicitType|, R|/variableWithImplicitType|) } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.kt new file mode 100644 index 00000000000..d25701e44da --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.kt @@ -0,0 +1,7 @@ +class A { + fun x() { + class resolveMe() { + val e = 2 + } + } +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.txt new file mode 100644 index 00000000000..51a455314f4 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.txt @@ -0,0 +1,373 @@ +RAW_FIR: +FILE: localDeclaration.kt + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? fun x(): R|kotlin/Unit| { + local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public? final? val e: = IntegerLiteral(2) + [ContainingClassKey=resolveMe] public? get(): + + } + + } + + } + +IMPORTS: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +SUPER_TYPES: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +TYPES: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +STATUS: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +CONTRACTS: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +BODY_RESOLVE: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +NoResolve: +FILE: localDeclaration.kt + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public? final? fun x(): R|kotlin/Unit| { + local final? [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public? [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public? final? val e: = IntegerLiteral(2) + [ContainingClassKey=resolveMe] public? get(): + + } + + } + + } + +BodyResolveWithChildren: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +AnnotationType: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +AnnotationsArguments: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +ClassSuperTypes: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +DeclarationStatus: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +ValueParametersTypes: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +TypeParametersTypes: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } + +FILE RAW TO BODY: +FILE: localDeclaration.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + public final fun x(): R|kotlin/Unit| { + local final [ContainingClassKey=A] class resolveMe : R|kotlin/Any| { + public [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| { + super() + } + + public final val e: R|kotlin/Int| = Int(2) + [ContainingClassKey=resolveMe] public get(): R|kotlin/Int| + + } + + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.kt new file mode 100644 index 00000000000..fe2999ca8e4 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.kt @@ -0,0 +1,6 @@ +fun ddd() { + class XX { + var x: Int = 2 + set(resolveMe) = Unit + } +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.txt new file mode 100644 index 00000000000..f95b0205908 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.txt @@ -0,0 +1,341 @@ +RAW_FIR: +FILE: parameterOfLocalSetter.kt + public? final? fun ddd(): R|kotlin/Unit| { + local final? class XX : R|kotlin/Any| { + public? [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public? final? var x: Int = IntegerLiteral(2) + [ContainingClassKey=XX] public? get(): Int + [ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + + } + + } + +IMPORTS: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +SUPER_TYPES: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +TYPES: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +STATUS: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +CONTRACTS: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +BODY_RESOLVE: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +NoResolve: +FILE: parameterOfLocalSetter.kt + public? final? fun ddd(): R|kotlin/Unit| { + local final? class XX : R|kotlin/Any| { + public? [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public? final? var x: Int = IntegerLiteral(2) + [ContainingClassKey=XX] public? get(): Int + [ContainingClassKey=XX] public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + + } + + } + +BodyResolveWithChildren: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +CallableBodyResolve: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +CallableReturnType: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +AnnotationType: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +AnnotationsArguments: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +CallableContracts: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +DeclarationStatus: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +ValueParametersTypes: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +TypeParametersTypes: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } + +FILE RAW TO BODY: +FILE: parameterOfLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final class XX : R|kotlin/Any| { + public [ContainingClassKey=XX] constructor(): R|XX| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=XX] public get(): R|kotlin/Int| + [ContainingClassKey=XX] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.kt new file mode 100644 index 00000000000..23e64fcc301 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.kt @@ -0,0 +1,4 @@ +class X { + var x: Int = 2 + set(resolveMe) = Unit +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.txt new file mode 100644 index 00000000000..6b51a4732e6 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.txt @@ -0,0 +1,284 @@ +RAW_FIR: +FILE: parameterOfNonLocalSetter.kt + public? final? class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? var x: Int = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): Int + [ContainingClassKey=X] public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + + } + +IMPORTS: +FILE: parameterOfNonLocalSetter.kt + public? final? class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? var x: Int = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): Int + [ContainingClassKey=X] public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + + } + +SUPER_TYPES: +FILE: parameterOfNonLocalSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? var x: Int = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): Int + [ContainingClassKey=X] public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + + } + +TYPES: +FILE: parameterOfNonLocalSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): R|kotlin/Int| + [ContainingClassKey=X] public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +STATUS: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +CONTRACTS: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +BODY_RESOLVE: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + +NoResolve: +FILE: parameterOfNonLocalSetter.kt + public? final? class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? var x: Int = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): Int + [ContainingClassKey=X] public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + + } + +BodyResolveWithChildren: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + +CallableBodyResolve: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + +CallableReturnType: +FILE: parameterOfNonLocalSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): R|kotlin/Int| + [ContainingClassKey=X] public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +AnnotationType: +FILE: parameterOfNonLocalSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): R|kotlin/Int| + [ContainingClassKey=X] public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +AnnotationsArguments: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } + +CallableContracts: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +DeclarationStatus: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +ValueParametersTypes: +FILE: parameterOfNonLocalSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): R|kotlin/Int| + [ContainingClassKey=X] public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +TypeParametersTypes: +FILE: parameterOfNonLocalSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + [ContainingClassKey=X] public? get(): R|kotlin/Int| + [ContainingClassKey=X] public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + + } + +FILE RAW TO BODY: +FILE: parameterOfNonLocalSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class X : R|kotlin/Any| { + public [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final var x: R|kotlin/Int| = Int(2) + [ContainingClassKey=X] public get(): R|kotlin/Int| + [ContainingClassKey=X] public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt index 4fa1ae8779d..c6007a79b26 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt @@ -1,7 +1,227 @@ +RAW_FIR: FILE: propertyWithGetter.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +IMPORTS: +FILE: propertyWithGetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +SUPER_TYPES: +FILE: propertyWithGetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +TYPES: +FILE: propertyWithGetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +STATUS: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +CONTRACTS: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +BODY_RESOLVE: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { R|/receive|(R|/withGetter|) } - public final [STATUS] fun receive([STATUS] value: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK } - public final [STATUS] val withGetter: R|kotlin/Int| - [STATUS] public get(): R|kotlin/Int| { LAZY_BLOCK } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val withGetter: R|kotlin/Int| + public get(): R|kotlin/Int| { + ^ IntegerLiteral(42) + } + +NoResolve: +FILE: propertyWithGetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +BodyResolveWithChildren: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetter|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val withGetter: R|kotlin/Int| + public get(): R|kotlin/Int| { + ^ IntegerLiteral(42) + } + +CallableBodyResolve: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetter|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val withGetter: R|kotlin/Int| + public get(): R|kotlin/Int| { + ^ IntegerLiteral(42) + } + +CallableReturnType: +FILE: propertyWithGetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +AnnotationType: +FILE: propertyWithGetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +AnnotationsArguments: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetter|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val withGetter: R|kotlin/Int| + public get(): R|kotlin/Int| { + ^ IntegerLiteral(42) + } + +CallableContracts: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +DeclarationStatus: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +ValueParametersTypes: +FILE: propertyWithGetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +TypeParametersTypes: +FILE: propertyWithGetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetter#) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? val withGetter: Int + public? get(): Int { + ^ IntegerLiteral(42) + } + +FILE RAW TO BODY: +FILE: propertyWithGetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetter|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] val withGetter: R|kotlin/Int| + public get(): R|kotlin/Int| { + ^ Int(42) + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt index ee46ab0fb5d..878250f888b 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt @@ -1,9 +1,303 @@ +RAW_FIR: FILE: propertyWithGetterAndSetter.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +IMPORTS: +FILE: propertyWithGetterAndSetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +SUPER_TYPES: +FILE: propertyWithGetterAndSetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +TYPES: +FILE: propertyWithGetterAndSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +STATUS: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +CONTRACTS: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +BODY_RESOLVE: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { R|/receive|(R|/withGetterAndSetter|) R|/withGetterAndSetter| = Int(123) } - public final [STATUS] fun receive([STATUS] value: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK } - public final [STATUS] var withGetterAndSetter: R|kotlin/Int| = LAZY_EXPRESSION - [STATUS] public get(): R|kotlin/Int| { LAZY_BLOCK } - [STATUS] public set([RAW_FIR] value: R|kotlin/Int|): R|kotlin/Unit| { LAZY_BLOCK } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var withGetterAndSetter: R|kotlin/Int| = IntegerLiteral(42) + public get(): R|kotlin/Int| { + ^ field# + } + public set(value: R|kotlin/Int|): R|kotlin/Unit| { + field# = value# + } + +NoResolve: +FILE: propertyWithGetterAndSetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +BodyResolveWithChildren: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetterAndSetter|) + R|/withGetterAndSetter| = Int(123) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var withGetterAndSetter: R|kotlin/Int| = IntegerLiteral(42) + public get(): R|kotlin/Int| { + ^ field# + } + public set(value: R|kotlin/Int|): R|kotlin/Unit| { + field# = value# + } + +CallableBodyResolve: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetterAndSetter|) + R|/withGetterAndSetter| = Int(123) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var withGetterAndSetter: R|kotlin/Int| = IntegerLiteral(42) + public get(): R|kotlin/Int| { + ^ field# + } + public set(value: R|kotlin/Int|): R|kotlin/Unit| { + field# = value# + } + +CallableReturnType: +FILE: propertyWithGetterAndSetter.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +AnnotationType: +FILE: propertyWithGetterAndSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +AnnotationsArguments: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetterAndSetter|) + R|/withGetterAndSetter| = Int(123) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var withGetterAndSetter: R|kotlin/Int| = IntegerLiteral(42) + public get(): R|kotlin/Int| { + ^ field# + } + public set(value: R|kotlin/Int|): R|kotlin/Unit| { + field# = value# + } + +CallableContracts: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +DeclarationStatus: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +ValueParametersTypes: +FILE: propertyWithGetterAndSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +TypeParametersTypes: +FILE: propertyWithGetterAndSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(withGetterAndSetter#) + withGetterAndSetter# = IntegerLiteral(123) + } + public? final? fun receive(value: Int): R|kotlin/Unit| { + } + public? final? var withGetterAndSetter: Int = IntegerLiteral(42) + public? get(): Int { + ^ field# + } + public? set(value: Int): R|kotlin/Unit| { + field# = value# + } + +FILE RAW TO BODY: +FILE: propertyWithGetterAndSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/withGetterAndSetter|) + R|/withGetterAndSetter| = Int(123) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|kotlin/Int|): R|kotlin/Unit| { + } + public final [IsReferredViaField=true, ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var withGetterAndSetter: R|kotlin/Int| = Int(42) + public get(): R|kotlin/Int| { + ^ F|/withGetterAndSetter| + } + public set(value: R|kotlin/Int|): R|kotlin/Unit| { + F|/withGetterAndSetter| = R|/value| + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt index 60e0f98be26..fb8c0613f60 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt @@ -1,6 +1,151 @@ +RAW_FIR: FILE: propertyWithInitializer.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +IMPORTS: +FILE: propertyWithInitializer.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +SUPER_TYPES: +FILE: propertyWithInitializer.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +TYPES: +FILE: propertyWithInitializer.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +STATUS: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +CONTRACTS: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +BODY_RESOLVE: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { #(R|/property|) } - public final [STATUS] val property: R|kotlin/Int| = LAZY_EXPRESSION - [BODY_RESOLVE] public get(): R|kotlin/Int| + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val property: R|kotlin/Int| = IntegerLiteral(10) + public get(): R|kotlin/Int| + +NoResolve: +FILE: propertyWithInitializer.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +BodyResolveWithChildren: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + #(R|/property|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val property: R|kotlin/Int| = IntegerLiteral(10) + public get(): R|kotlin/Int| + +CallableBodyResolve: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + #(R|/property|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val property: R|kotlin/Int| = IntegerLiteral(10) + public get(): R|kotlin/Int| + +CallableReturnType: +FILE: propertyWithInitializer.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +AnnotationType: +FILE: propertyWithInitializer.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +AnnotationsArguments: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + #(R|/property|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] val property: R|kotlin/Int| = IntegerLiteral(10) + public get(): R|kotlin/Int| + +CallableContracts: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +DeclarationStatus: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +ValueParametersTypes: +FILE: propertyWithInitializer.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +TypeParametersTypes: +FILE: propertyWithInitializer.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(property#) + } + public? final? val property: Int = IntegerLiteral(10) + public? get(): Int + +FILE RAW TO BODY: +FILE: propertyWithInitializer.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + #(R|/property|) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] val property: R|kotlin/Int| = Int(10) + public get(): R|kotlin/Int| diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt index 7a8eb2201af..fcd4a47569b 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt @@ -1,12 +1,284 @@ +RAW_FIR: FILE: secondaryConstructor.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { - R|/receive|(R|/A.A|(Int(42))) + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) } - public final [STATUS] fun receive([STATUS] value: R|A|): R|kotlin/Unit| { LAZY_BLOCK } - public final [STATUS] class A : R|kotlin/Any| { - public [STATUS] constructor([STATUS] x: R|kotlin/Int|): R|A| { + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { super() - [RAW_FIR] lval a: = x# + lval a: = x# + } + + } + +IMPORTS: +FILE: secondaryConstructor.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +SUPER_TYPES: +FILE: secondaryConstructor.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +TYPES: +FILE: secondaryConstructor.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +STATUS: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +CONTRACTS: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +BODY_RESOLVE: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/A.A|(Int(42))) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|A|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A, ResolvePhaseWithForAllDeclarationsKey=STATUS] constructor(x: R|kotlin/Int|): R|A| { + super() + lval a: = x# + } + + } + +NoResolve: +FILE: secondaryConstructor.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +BodyResolveWithChildren: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/A.A|(Int(42))) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|A|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A, ResolvePhaseWithForAllDeclarationsKey=STATUS] constructor(x: R|kotlin/Int|): R|A| { + super() + lval a: = x# + } + + } + +CallableBodyResolve: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/A.A|(Int(42))) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|A|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A, ResolvePhaseWithForAllDeclarationsKey=STATUS] constructor(x: R|kotlin/Int|): R|A| { + super() + lval a: = x# + } + + } + +CallableReturnType: +FILE: secondaryConstructor.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +AnnotationType: +FILE: secondaryConstructor.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +AnnotationsArguments: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/A.A|(Int(42))) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|A|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A, ResolvePhaseWithForAllDeclarationsKey=STATUS] constructor(x: R|kotlin/Int|): R|A| { + super() + lval a: = x# + } + + } + +CallableContracts: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +DeclarationStatus: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +ValueParametersTypes: +FILE: secondaryConstructor.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +TypeParametersTypes: +FILE: secondaryConstructor.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(A#(IntegerLiteral(42))) + } + public? final? fun receive(value: A): R|kotlin/Unit| { + } + public? final? class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(x: Int): R|A| { + super() + lval a: = x# + } + + } + +FILE RAW TO BODY: +FILE: secondaryConstructor.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/A.A|(Int(42))) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|A|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(x: R|kotlin/Int|): R|A| { + super() + lval a: R|kotlin/Int| = R|/x| } } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.kt new file mode 100644 index 00000000000..5a01b729aa9 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.kt @@ -0,0 +1,5 @@ +open class A + +open class B : A() + +open class resolveMe : A() \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt new file mode 100644 index 00000000000..218e61514f6 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt @@ -0,0 +1,356 @@ +RAW_FIR: +FILE: superTypes.kt + public? open class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class resolveMe : A { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +IMPORTS: +FILE: superTypes.kt + public? open class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class resolveMe : A { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +SUPER_TYPES: +FILE: superTypes.kt + public? open class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class resolveMe : R|A| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +TYPES: +FILE: superTypes.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|A| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +STATUS: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=STATUS] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +CONTRACTS: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +BODY_RESOLVE: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +NoResolve: +FILE: superTypes.kt + public? open class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class resolveMe : A { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +BodyResolveWithChildren: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +AnnotationType: +FILE: superTypes.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|A| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +AnnotationsArguments: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +ClassSuperTypes: +FILE: superTypes.kt + public? open class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class resolveMe : R|A| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +DeclarationStatus: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=STATUS] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +ValueParametersTypes: +FILE: superTypes.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|A| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +TypeParametersTypes: +FILE: superTypes.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class A : R|kotlin/Any| { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : A { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|A| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + +FILE RAW TO BODY: +FILE: superTypes.kt + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class A : R|kotlin/Any| { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class B : R|A| { + public [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|A| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.kt new file mode 100644 index 00000000000..666e9a4b9cb --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.kt @@ -0,0 +1,7 @@ +open class resolveMe : C() + +open class A : B() + +open class B : C() + +open class C : A() \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt new file mode 100644 index 00000000000..0fb906dd705 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt @@ -0,0 +1,458 @@ +RAW_FIR: +FILE: superTypesLoop.kt + public? open class resolveMe : C { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class C : A { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +IMPORTS: +FILE: superTypesLoop.kt + public? open class resolveMe : C { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class C : A { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +SUPER_TYPES: +FILE: superTypesLoop.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class resolveMe : R|C| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class C : A { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +TYPES: +FILE: superTypesLoop.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|C| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : /A> { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +STATUS: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=STATUS] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +CONTRACTS: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +BODY_RESOLVE: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +NoResolve: +FILE: superTypesLoop.kt + public? open class resolveMe : C { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class C : A { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +BodyResolveWithChildren: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +AnnotationType: +FILE: superTypesLoop.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|C| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : /A> { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +AnnotationsArguments: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +ClassSuperTypes: +FILE: superTypesLoop.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class resolveMe : R|C| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open class C : A { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +DeclarationStatus: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=STATUS] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class C : /A> { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +ValueParametersTypes: +FILE: superTypesLoop.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|C| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : /A> { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +TypeParametersTypes: +FILE: superTypesLoop.kt + public? open [ResolvePhaseWithForAllDeclarationsKey=TYPES] class resolveMe : R|C| { + public? [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public? open class A : B { + public? [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public? open class B : C { + public? [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public? open [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class C : /A> { + public? [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } + +FILE RAW TO BODY: +FILE: superTypesLoop.kt + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class resolveMe : R|C| { + public [ContainingClassKey=resolveMe] constructor(): R|resolveMe| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class A : /B> { + public [ContainingClassKey=A] constructor(): R|A| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class B : R|C| { + public [ContainingClassKey=B] constructor(): R|B| { + super() + } + + } + public open [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class C : R|A| { + public [ContainingClassKey=C] constructor(): R|C| { + super() + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt index 96d5ba8c505..bbf1988d0f0 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt @@ -1,6 +1,208 @@ +RAW_FIR: FILE: topLevelFunctions.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +IMPORTS: +FILE: topLevelFunctions.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +SUPER_TYPES: +FILE: topLevelFunctions.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +TYPES: +FILE: topLevelFunctions.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +STATUS: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +CONTRACTS: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +BODY_RESOLVE: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { R|/receive|(R|/functionWithLazyBody|()) } - public final [STATUS] fun receive([STATUS] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } - public final [STATUS] fun functionWithLazyBody(): R|kotlin/String| { LAZY_BLOCK } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +NoResolve: +FILE: topLevelFunctions.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +BodyResolveWithChildren: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableBodyResolve: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableReturnType: +FILE: topLevelFunctions.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +AnnotationType: +FILE: topLevelFunctions.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +AnnotationsArguments: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableContracts: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +DeclarationStatus: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +ValueParametersTypes: +FILE: topLevelFunctions.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +TypeParametersTypes: +FILE: topLevelFunctions.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +FILE RAW TO BODY: +FILE: topLevelFunctions.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt index 00089ca7966..ed1dce3dd2e 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt @@ -1,6 +1,208 @@ +RAW_FIR: FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +IMPORTS: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +SUPER_TYPES: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +TYPES: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +STATUS: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +CONTRACTS: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +BODY_RESOLVE: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { R|/receive|(R|/functionWithLazyBody|()) } - public final [STATUS] fun receive([STATUS] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } - public final [STATUS] fun functionWithLazyBody(): R|kotlin/String| { LAZY_BLOCK } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +NoResolve: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +BodyResolveWithChildren: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableBodyResolve: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableReturnType: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +AnnotationType: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +AnnotationsArguments: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableContracts: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +DeclarationStatus: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +ValueParametersTypes: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +TypeParametersTypes: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): String { + ^functionWithLazyBody String(42) + } + +FILE RAW TO BODY: +FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt index 16d2d691fe0..3c275b2248c 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt @@ -1,8 +1,208 @@ +RAW_FIR: FILE: topLevelFunctionsWithImplicitType.kt - public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { - R|/receive|(R|/functionWithLazyBody|()) + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) } - public final [STATUS] fun receive([STATUS] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK } - public final [BODY_RESOLVE] fun functionWithLazyBody(): R|kotlin/String| { + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +IMPORTS: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +SUPER_TYPES: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +TYPES: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +STATUS: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +CONTRACTS: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +BODY_RESOLVE: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +NoResolve: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +BodyResolveWithChildren: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableBodyResolve: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableReturnType: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +AnnotationType: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +AnnotationsArguments: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun functionWithLazyBody(): R|kotlin/String| { + ^functionWithLazyBody String(42) + } + +CallableContracts: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +DeclarationStatus: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +ValueParametersTypes: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +TypeParametersTypes: +FILE: topLevelFunctionsWithImplicitType.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun resolveMe(): R|kotlin/Unit| { + receive#(functionWithLazyBody#()) + } + public? final? fun receive(value: String): R|kotlin/Unit| { + } + public? final? fun functionWithLazyBody(): { + ^functionWithLazyBody String(42) + } + +FILE RAW TO BODY: +FILE: topLevelFunctionsWithImplicitType.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + R|/receive|(R|/functionWithLazyBody|()) + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun receive(value: R|kotlin/String|): R|kotlin/Unit| { + } + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun functionWithLazyBody(): R|kotlin/String| { ^functionWithLazyBody String(42) } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.kt new file mode 100644 index 00000000000..75516f60d60 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.kt @@ -0,0 +1,3 @@ +fun ddd() { + fun kkk() {} +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.txt new file mode 100644 index 00000000000..a32081d4dbe --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.txt @@ -0,0 +1,127 @@ +RAW_FIR: +FILE: typeParameterOfLocalFunction.kt + public? final? fun ddd(): R|kotlin/Unit| { + local final? fun kkk(): R|kotlin/Unit| { + } + + } + +IMPORTS: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +SUPER_TYPES: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +TYPES: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +STATUS: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +CONTRACTS: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +BODY_RESOLVE: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +NoResolve: +FILE: typeParameterOfLocalFunction.kt + public? final? fun ddd(): R|kotlin/Unit| { + local final? fun kkk(): R|kotlin/Unit| { + } + + } + +BodyResolveWithChildren: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +AnnotationType: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +AnnotationsArguments: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +DeclarationStatus: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +ValueParametersTypes: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +TypeParametersTypes: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } + +FILE RAW TO BODY: +FILE: typeParameterOfLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + local final fun kkk(): R|kotlin/Unit| { + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.kt new file mode 100644 index 00000000000..e8edffca1ff --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.kt @@ -0,0 +1,3 @@ +class X { + fun ddd() {} +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt new file mode 100644 index 00000000000..9c4558664dc --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt @@ -0,0 +1,191 @@ +RAW_FIR: +FILE: typeParameterOfNonLocalFunction.kt + public? final? class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? fun ddd(): R|kotlin/Unit| { + } + + } + +IMPORTS: +FILE: typeParameterOfNonLocalFunction.kt + public? final? class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? fun ddd(): R|kotlin/Unit| { + } + + } + +SUPER_TYPES: +FILE: typeParameterOfNonLocalFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? fun ddd(): R|kotlin/Unit| { + } + + } + +TYPES: +FILE: typeParameterOfNonLocalFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + + } + +STATUS: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun ddd(): R|kotlin/Unit| { + } + + } + +CONTRACTS: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| { + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + + } + +BODY_RESOLVE: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + + } + +NoResolve: +FILE: typeParameterOfNonLocalFunction.kt + public? final? class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? fun ddd(): R|kotlin/Unit| { + } + + } + +BodyResolveWithChildren: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + + } + +AnnotationType: +FILE: typeParameterOfNonLocalFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + + } + +AnnotationsArguments: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + + } + +DeclarationStatus: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun ddd(): R|kotlin/Unit| { + } + + } + +ValueParametersTypes: +FILE: typeParameterOfNonLocalFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + + } + +TypeParametersTypes: +FILE: typeParameterOfNonLocalFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=SUPER_TYPES] class X : R|kotlin/Any| { + public? [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + + } + +FILE RAW TO BODY: +FILE: typeParameterOfNonLocalFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] class X : R|kotlin/Any| { + public [ContainingClassKey=X] constructor(): R|X| { + super() + } + + public final fun ddd(): R|kotlin/Unit| { + } + + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.kt new file mode 100644 index 00000000000..3ce74970cd3 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.kt @@ -0,0 +1 @@ +fun ddd() {} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.txt new file mode 100644 index 00000000000..73d818a9c78 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.txt @@ -0,0 +1,79 @@ +RAW_FIR: +FILE: typeParameterOfTopFunction.kt + public? final? fun ddd(): R|kotlin/Unit| { + } + +IMPORTS: +FILE: typeParameterOfTopFunction.kt + public? final? fun ddd(): R|kotlin/Unit| { + } + +SUPER_TYPES: +FILE: typeParameterOfTopFunction.kt + public? final? fun ddd(): R|kotlin/Unit| { + } + +TYPES: +FILE: typeParameterOfTopFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + +STATUS: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun ddd(): R|kotlin/Unit| { + } + +CONTRACTS: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] fun ddd(): R|kotlin/Unit| { + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + +BODY_RESOLVE: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + +NoResolve: +FILE: typeParameterOfTopFunction.kt + public? final? fun ddd(): R|kotlin/Unit| { + } + +BodyResolveWithChildren: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + +AnnotationType: +FILE: typeParameterOfTopFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + +AnnotationsArguments: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } + +DeclarationStatus: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] fun ddd(): R|kotlin/Unit| { + } + +ValueParametersTypes: +FILE: typeParameterOfTopFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + +TypeParametersTypes: +FILE: typeParameterOfTopFunction.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] fun ddd(): R|kotlin/Unit| { + } + +FILE RAW TO BODY: +FILE: typeParameterOfTopFunction.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] fun ddd(): R|kotlin/Unit| { + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.kt new file mode 100644 index 00000000000..653a264eda3 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.kt @@ -0,0 +1,2 @@ +var x: Int = 2 + set(resolveMe) = Unit \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.txt new file mode 100644 index 00000000000..5085f5ea19b --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.txt @@ -0,0 +1,151 @@ +RAW_FIR: +FILE: typeParameterOfTopSetter.kt + public? final? var x: Int = IntegerLiteral(2) + public? get(): Int + public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + +IMPORTS: +FILE: typeParameterOfTopSetter.kt + public? final? var x: Int = IntegerLiteral(2) + public? get(): Int + public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + +SUPER_TYPES: +FILE: typeParameterOfTopSetter.kt + public? final? var x: Int = IntegerLiteral(2) + public? get(): Int + public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + +TYPES: +FILE: typeParameterOfTopSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + public? get(): R|kotlin/Int| + public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +STATUS: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var x: R|kotlin/Int| = IntegerLiteral(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +CONTRACTS: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] var x: R|kotlin/Int| = IntegerLiteral(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=IMPLICIT_TYPES_BODY_RESOLVE] var x: R|kotlin/Int| = IntegerLiteral(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +BODY_RESOLVE: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + +NoResolve: +FILE: typeParameterOfTopSetter.kt + public? final? var x: Int = IntegerLiteral(2) + public? get(): Int + public? set(resolveMe: Int): R|kotlin/Unit| { + ^ Unit# + } + +BodyResolveWithChildren: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + +CallableBodyResolve: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + +CallableReturnType: +FILE: typeParameterOfTopSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + public? get(): R|kotlin/Int| + public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +AnnotationType: +FILE: typeParameterOfTopSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + public? get(): R|kotlin/Int| + public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +AnnotationsArguments: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } + +CallableContracts: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=CONTRACTS] var x: R|kotlin/Int| = IntegerLiteral(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +DeclarationStatus: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=STATUS] var x: R|kotlin/Int| = IntegerLiteral(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +ValueParametersTypes: +FILE: typeParameterOfTopSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + public? get(): R|kotlin/Int| + public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +TypeParametersTypes: +FILE: typeParameterOfTopSetter.kt + public? final? [ResolvePhaseWithForAllDeclarationsKey=TYPES] var x: R|kotlin/Int| = IntegerLiteral(2) + public? get(): R|kotlin/Int| + public? set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Unit# + } + +FILE RAW TO BODY: +FILE: typeParameterOfTopSetter.kt + public final [ResolvePhaseWithForAllDeclarationsKey=BODY_RESOLVE] var x: R|kotlin/Int| = Int(2) + public get(): R|kotlin/Int| + public set(resolveMe: R|kotlin/Int|): R|kotlin/Unit| { + ^ Q|kotlin/Unit| + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirLazyDeclarationResolveTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirLazyDeclarationResolveTest.kt index a34cb528ad7..9d55472f233 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirLazyDeclarationResolveTest.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirLazyDeclarationResolveTest.kt @@ -7,16 +7,19 @@ package org.jetbrains.kotlin.idea.fir.low.level.api import com.intellij.openapi.util.io.FileUtil import com.intellij.testFramework.LightProjectDescriptor -import org.jetbrains.kotlin.fir.FirRenderer -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.render +import org.jetbrains.kotlin.fir.* +import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo import org.jetbrains.kotlin.idea.caches.project.getModuleInfo import org.jetbrains.kotlin.idea.fir.low.level.api.api.withFirDeclaration import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver +import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.ResolveType import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.declarationCanBeLazilyResolved import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor +import org.jetbrains.kotlin.psi.KtCallableDeclaration +import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType @@ -29,27 +32,80 @@ import java.io.File abstract class AbstractFirLazyDeclarationResolveTest : KotlinLightCodeInsightFixtureTestCase() { override fun isFirPlugin(): Boolean = true + private fun FirFile.findResolveMe(): FirDeclaration { + val visitor = object : FirVisitorVoid() { + var result: FirDeclaration? = null + override fun visitElement(element: FirElement) { + if (result != null) return + val declaration = element.realPsi as? KtDeclaration + if (element is FirDeclaration && declaration != null && declaration.name == "resolveMe") { + result = element + return + } + element.acceptChildren(this) + } + + } + accept(visitor) + return visitor.result ?: error("declaration with name `resolveMe` was not found") + } + + fun doTest(path: String) { val testDataFile = File(path) val ktFile = myFixture.configureByText(testDataFile.name, FileUtil.loadFile(testDataFile)) as KtFile - val lazyDeclarations = ktFile.collectDescendantsOfType { ktDeclaration -> - declarationCanBeLazilyResolved(ktDeclaration) - } - val declarationToResolve = lazyDeclarations.firstOrNull { it.name?.lowercase() == "resolveme" } - ?: error("declaration with name `resolveMe` was not found") + val resultBuilder = StringBuilder() resolveWithClearCaches(ktFile) { firModuleResolveState -> check(firModuleResolveState is FirModuleResolveStateImpl) - val rendered = declarationToResolve.withFirDeclaration( - firModuleResolveState, - FirResolvePhase.BODY_RESOLVE - ) @Suppress("UNUSED_ANONYMOUS_PARAMETER") { firDeclaration -> - val firFile = firModuleResolveState.getOrBuildFirFile(ktFile) - firFile.render(FirRenderer.RenderMode.WithResolvePhases) + val declarationToResolve = firModuleResolveState + .getOrBuildFirFile(ktFile) + .findResolveMe() + for (currentPhase in FirResolvePhase.values()) { + if (currentPhase.pluginPhase || currentPhase == FirResolvePhase.SEALED_CLASS_INHERITORS) continue + declarationToResolve.withFirDeclaration(firModuleResolveState, currentPhase) { + val firFile = firModuleResolveState.getOrBuildFirFile(ktFile) + resultBuilder.append("\n${currentPhase.name}:\n") + resultBuilder.append(firFile.render(FirRenderer.RenderMode.WithDeclarationAttributes)) + } } - val expectedFileName = testDataFile.name.replace(".kt", ".txt") - KotlinTestUtils.assertEqualsToFile(testDataFile.parentFile.resolve(expectedFileName), rendered) } + + for (resolveType in ResolveType.values()) { + resolveWithClearCaches(ktFile) { firModuleResolveState -> + check(firModuleResolveState is FirModuleResolveStateImpl) + val declarationToResolve = firModuleResolveState + .getOrBuildFirFile(ktFile) + .findResolveMe() + + when (resolveType) { + ResolveType.CallableReturnType, + ResolveType.CallableBodyResolve, + ResolveType.CallableContracts -> if (declarationToResolve !is FirCallableDeclaration<*>) return@resolveWithClearCaches + ResolveType.ClassSuperTypes -> if (declarationToResolve !is FirClassLikeDeclaration<*>) return@resolveWithClearCaches + else -> { + } + } + + declarationToResolve.withFirDeclaration(resolveType, firModuleResolveState) { + val firFile = firModuleResolveState.getOrBuildFirFile(ktFile) + resultBuilder.append("\n${resolveType.name}:\n") + resultBuilder.append(firFile.render(FirRenderer.RenderMode.WithDeclarationAttributes)) + } + } + } + + resolveWithClearCaches(ktFile) { firModuleResolveState -> + check(firModuleResolveState is FirModuleResolveStateImpl) + val firFile = firModuleResolveState.getOrBuildFirFile(ktFile) + firFile.withFirDeclaration(firModuleResolveState, FirResolvePhase.BODY_RESOLVE) { + resultBuilder.append("\nFILE RAW TO BODY:\n") + resultBuilder.append(firFile.render(FirRenderer.RenderMode.WithDeclarationAttributes)) + } + } + + val expectedFileName = testDataFile.name.replace(".kt", ".txt") + KotlinTestUtils.assertEqualsToFile(testDataFile.parentFile.resolve(expectedFileName), resultBuilder.toString()) } override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractPartialRawFirBuilderTestCase.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractPartialRawFirBuilderTestCase.kt index ffbf12b0800..58c0e71857d 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractPartialRawFirBuilderTestCase.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractPartialRawFirBuilderTestCase.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid +import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignation import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.RawFirNonLocalDeclarationBuilder import org.jetbrains.kotlin.parsing.KotlinParserDefinition import org.jetbrains.kotlin.psi.* @@ -68,7 +69,7 @@ abstract class AbstractPartialRawFirBuilderTestCase : KtParsingTestCase( is FirSimpleFunction, is FirProperty -> { if (element.psi == elementToBuild) { val originalDeclaration = element as FirDeclaration - resultDesignation = FirDeclarationDesignation(path, originalDeclaration, false) + resultDesignation = FirDeclarationDesignation(path, originalDeclaration) } else { element.acceptChildren(this) } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirLazyDeclarationResolveTestGenerated.java b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirLazyDeclarationResolveTestGenerated.java index 5d1f4296583..16cbb3fcb8e 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirLazyDeclarationResolveTestGenerated.java +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirLazyDeclarationResolveTestGenerated.java @@ -29,6 +29,11 @@ public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDecla KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("annotations.kt") + public void testAnnotations() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/annotations.kt"); + } + @TestMetadata("classMembers.kt") public void testClassMembers() throws Exception { runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.kt"); @@ -39,6 +44,21 @@ public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDecla runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.kt"); } + @TestMetadata("localDeclaration.kt") + public void testLocalDeclaration() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/localDeclaration.kt"); + } + + @TestMetadata("parameterOfLocalSetter.kt") + public void testParameterOfLocalSetter() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfLocalSetter.kt"); + } + + @TestMetadata("parameterOfNonLocalSetter.kt") + public void testParameterOfNonLocalSetter() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/parameterOfNonLocalSetter.kt"); + } + @TestMetadata("propertyWithGetter.kt") public void testPropertyWithGetter() throws Exception { runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.kt"); @@ -59,6 +79,16 @@ public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDecla runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.kt"); } + @TestMetadata("superTypes.kt") + public void testSuperTypes() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.kt"); + } + + @TestMetadata("superTypesLoop.kt") + public void testSuperTypesLoop() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.kt"); + } + @TestMetadata("topLevelFunctions.kt") public void testTopLevelFunctions() throws Exception { runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.kt"); @@ -73,4 +103,24 @@ public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDecla public void testTopLevelFunctionsWithImplicitType() throws Exception { runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.kt"); } + + @TestMetadata("typeParameterOfLocalFunction.kt") + public void testTypeParameterOfLocalFunction() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfLocalFunction.kt"); + } + + @TestMetadata("typeParameterOfNonLocalFunction.kt") + public void testTypeParameterOfNonLocalFunction() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfNonLocalFunction.kt"); + } + + @TestMetadata("typeParameterOfTopFunction.kt") + public void testTypeParameterOfTopFunction() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopFunction.kt"); + } + + @TestMetadata("typeParameterOfTopSetter.kt") + public void testTypeParameterOfTopSetter() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/typeParameterOfTopSetter.kt"); + } }