diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index d73b671d298..5c14b8ef5c8 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -37440,6 +37440,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @Test + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @Test @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt index f9b62f6427b..e8d0a90a259 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt @@ -79,6 +79,7 @@ class ControlFlowGraphBuilder { private val exitsFromCompletedPostponedAnonymousFunctions: MutableList = mutableListOf() private val whenExitNodes: NodeStorage = NodeStorage() + private val whenBranchIndices: Stack> = stackOf() private val binaryAndExitNodes: Stack = stackOf() private val binaryOrExitNodes: Stack = stackOf() @@ -596,6 +597,7 @@ class ControlFlowGraphBuilder { val node = createWhenEnterNode(whenExpression) addNewSimpleNode(node) whenExitNodes.push(createWhenExitNode(whenExpression)) + whenBranchIndices.push(whenExpression.branches.mapIndexed { index, branch -> branch to index }.toMap()) levelCounter++ return node } @@ -613,6 +615,7 @@ class ControlFlowGraphBuilder { lastNodes.push(it) addEdge(conditionExitNode, it) } + levelCounter += whenBranchIndices.top().getValue(whenBranch) return conditionExitNode to branchEnterNode } @@ -622,6 +625,7 @@ class ControlFlowGraphBuilder { popAndAddEdge(node) val whenExitNode = whenExitNodes.top() addEdge(node, whenExitNode, propagateDeadness = false) + levelCounter -= whenBranchIndices.top().getValue(whenBranch) return node } @@ -640,6 +644,7 @@ class ControlFlowGraphBuilder { lastNodes.push(whenExitNode) dropPostponedLambdasForNonDeterministicCalls() levelCounter-- + whenBranchIndices.pop() return whenExitNode to syntheticElseBranchNode } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt index 2f25d1cd79a..665fbe7d430 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt @@ -18,6 +18,7 @@ import java.util.* class FirControlFlowGraphRenderVisitor( builder: StringBuilder, + private val renderLevels: Boolean = false ) : FirVisitorVoid() { companion object { private const val EDGE = " -> " @@ -81,7 +82,13 @@ class FirControlFlowGraphRenderVisitor( color = BLUE } val attributes = mutableListOf() - attributes += "label=\"${node.render().replace("\"", "")}\"" + val label = buildString { + append(node.render().replace("\"", "")) + if (renderLevels) { + append(" [${node.level}]") + } + } + attributes += "label=\"$label\"" fun fillColor(color: String) { attributes += "style=\"filled\"" @@ -218,4 +225,4 @@ private fun ControlFlowGraph.forEachSubGraph(block: (ControlFlowGraph) -> Unit) block(subGraph) subGraph.forEachSubGraph(block) } -} \ No newline at end of file +} diff --git a/compiler/testData/codegen/box/smartCasts/kt44814.dot b/compiler/testData/codegen/box/smartCasts/kt44814.dot new file mode 100644 index 00000000000..ef4fbb6fce4 --- /dev/null +++ b/compiler/testData/codegen/box/smartCasts/kt44814.dot @@ -0,0 +1,1035 @@ +digraph kt44814_kt { + graph [nodesep=3] + node [shape=box penwidth=2] + edge [penwidth=2] + + subgraph cluster_0 { + color=red + 0 [label="Enter class FlyweightCapableTreeStructure [1]" style="filled" fillcolor=red]; + 1 [label="Exit class FlyweightCapableTreeStructure [1]" style="filled" fillcolor=red]; + } + 0 -> {1} [color=green]; + + subgraph cluster_1 { + color=red + 2 [label="Enter function [2]" style="filled" fillcolor=red]; + 3 [label="Delegated constructor call: super() [2]"]; + 4 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 2 -> {3}; + 3 -> {4}; + + subgraph cluster_2 { + color=red + 5 [label="Enter class FirSourceElement [1]" style="filled" fillcolor=red]; + 6 [label="Exit class FirSourceElement [1]" style="filled" fillcolor=red]; + } + 5 -> {6} [color=green]; + + subgraph cluster_3 { + color=red + 7 [label="Enter function [2]" style="filled" fillcolor=red]; + 8 [label="Delegated constructor call: super() [2]"]; + 9 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 7 -> {8}; + 8 -> {9}; + + subgraph cluster_4 { + color=red + 10 [label="Enter function getter [2]" style="filled" fillcolor=red]; + 11 [label="Exit function getter [2]" style="filled" fillcolor=red]; + } + 10 -> {11}; + + subgraph cluster_5 { + color=red + 12 [label="Enter function getter [2]" style="filled" fillcolor=red]; + 13 [label="Exit function getter [2]" style="filled" fillcolor=red]; + } + 12 -> {13}; + + subgraph cluster_6 { + color=red + 14 [label="Enter class FirPsiSourceElement [1]" style="filled" fillcolor=red]; + 15 [label="Part of class initialization [1]"]; + 16 [label="Part of class initialization [1]"]; + 17 [label="Part of class initialization [1]"]; + 18 [label="Exit class FirPsiSourceElement [1]" style="filled" fillcolor=red]; + } + 14 -> {15} [color=green]; + 15 -> {16} [style=dotted]; + 15 -> {24} [color=green]; + 15 -> {24} [style=dashed]; + 16 -> {17} [style=dotted]; + 16 -> {29} [color=green]; + 16 -> {29} [style=dashed]; + 17 -> {18} [style=dotted]; + 17 -> {34} [color=green]; + 17 -> {34} [style=dashed]; + + subgraph cluster_7 { + color=red + 19 [label="Enter function [2]" style="filled" fillcolor=red]; + 20 [label="Delegated constructor call: super() [2]"]; + 21 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 19 -> {20}; + 20 -> {21}; + + subgraph cluster_8 { + color=red + 22 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 23 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 22 -> {23}; + + subgraph cluster_9 { + color=red + 24 [label="Enter property [2]" style="filled" fillcolor=red]; + 25 [label="Access variable R|/psi| [2]"]; + 26 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 24 -> {25}; + 25 -> {26}; + 26 -> {16} [color=green]; + + subgraph cluster_10 { + color=red + 27 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 28 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 27 -> {28}; + + subgraph cluster_11 { + color=red + 29 [label="Enter property [2]" style="filled" fillcolor=red]; + 30 [label="Access variable R|/lighterASTNode| [2]"]; + 31 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 29 -> {30}; + 30 -> {31}; + 31 -> {17} [color=green]; + + subgraph cluster_12 { + color=red + 32 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 33 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 32 -> {33}; + + subgraph cluster_13 { + color=red + 34 [label="Enter property [2]" style="filled" fillcolor=red]; + 35 [label="Access variable R|/treeStructure| [2]"]; + 36 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 34 -> {35}; + 35 -> {36}; + 36 -> {18} [color=green]; + + subgraph cluster_14 { + color=red + 37 [label="Enter class FirLightSourceElement [1]" style="filled" fillcolor=red]; + 38 [label="Part of class initialization [1]"]; + 39 [label="Part of class initialization [1]"]; + 40 [label="Exit class FirLightSourceElement [1]" style="filled" fillcolor=red]; + } + 37 -> {38} [color=green]; + 38 -> {39} [style=dotted]; + 38 -> {46} [color=green]; + 38 -> {46} [style=dashed]; + 39 -> {40} [style=dotted]; + 39 -> {51} [color=green]; + 39 -> {51} [style=dashed]; + + subgraph cluster_15 { + color=red + 41 [label="Enter function [2]" style="filled" fillcolor=red]; + 42 [label="Delegated constructor call: super() [2]"]; + 43 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 41 -> {42}; + 42 -> {43}; + + subgraph cluster_16 { + color=red + 44 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 45 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 44 -> {45}; + + subgraph cluster_17 { + color=red + 46 [label="Enter property [2]" style="filled" fillcolor=red]; + 47 [label="Access variable R|/lighterASTNode| [2]"]; + 48 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 46 -> {47}; + 47 -> {48}; + 48 -> {39} [color=green]; + + subgraph cluster_18 { + color=red + 49 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 50 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 49 -> {50}; + + subgraph cluster_19 { + color=red + 51 [label="Enter property [2]" style="filled" fillcolor=red]; + 52 [label="Access variable R|/treeStructure| [2]"]; + 53 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 51 -> {52}; + 52 -> {53}; + 53 -> {40} [color=green]; + + subgraph cluster_20 { + color=red + 54 [label="Enter class PsiElement [1]" style="filled" fillcolor=red]; + 55 [label="Exit class PsiElement [1]" style="filled" fillcolor=red]; + } + 54 -> {55} [color=green]; + + subgraph cluster_21 { + color=red + 56 [label="Enter function [2]" style="filled" fillcolor=red]; + 57 [label="Delegated constructor call: super() [2]"]; + 58 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 56 -> {57}; + 57 -> {58}; + + subgraph cluster_22 { + color=red + 59 [label="Enter class ASTNode [1]" style="filled" fillcolor=red]; + 60 [label="Exit class ASTNode [1]" style="filled" fillcolor=red]; + } + 59 -> {60} [color=green]; + + subgraph cluster_23 { + color=red + 61 [label="Enter function [2]" style="filled" fillcolor=red]; + 62 [label="Delegated constructor call: super() [2]"]; + 63 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 61 -> {62}; + 62 -> {63}; + + subgraph cluster_24 { + color=red + 64 [label="Enter class LighterASTNode [1]" style="filled" fillcolor=red]; + 65 [label="Part of class initialization [1]"]; + 66 [label="Part of class initialization [1]"]; + 67 [label="Exit class LighterASTNode [1]" style="filled" fillcolor=red]; + } + 64 -> {65} [color=green]; + 65 -> {66} [style=dotted]; + 65 -> {76} [color=green]; + 65 -> {76} [style=dashed]; + 66 -> {67} [style=dotted]; + 66 -> {88} [color=green]; + 66 -> {88} [style=dashed]; + + subgraph cluster_25 { + color=red + 68 [label="Enter function [2]" style="filled" fillcolor=red]; + subgraph cluster_26 { + color=blue + 71 [label="Enter default value of _children [3]" style="filled" fillcolor=red]; + 72 [label="Function call: R|kotlin/collections/emptyList|() [3]"]; + 73 [label="Exit default value of _children [3]" style="filled" fillcolor=red]; + } + 69 [label="Delegated constructor call: super() [2]"]; + 70 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 68 -> {71 69}; + 69 -> {70}; + 71 -> {72}; + 71 -> {71} [style=dashed]; + 72 -> {73}; + + subgraph cluster_27 { + color=red + 74 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 75 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 74 -> {75}; + + subgraph cluster_28 { + color=red + 76 [label="Enter property [2]" style="filled" fillcolor=red]; + 77 [label="Access variable R|/_children| [2]"]; + 78 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 76 -> {77}; + 77 -> {78}; + 78 -> {66} [color=green]; + + subgraph cluster_29 { + color=red + 79 [label="Enter function getChildren [2]" style="filled" fillcolor=red]; + subgraph cluster_30 { + color=blue + 80 [label="Enter block [2]"]; + 81 [label="Access variable R|/LighterASTNode._children| [2]"]; + 82 [label="Jump: ^getChildren this@R|/LighterASTNode|.R|/LighterASTNode._children| [2]"]; + 83 [label="Stub [2]" style="filled" fillcolor=gray]; + 84 [label="Exit block [2]" style="filled" fillcolor=gray]; + } + 85 [label="Exit function getChildren [2]" style="filled" fillcolor=red]; + } + 79 -> {80}; + 80 -> {81}; + 81 -> {82}; + 82 -> {85}; + 82 -> {83} [style=dotted]; + 83 -> {84} [style=dotted]; + 84 -> {85} [style=dotted]; + + subgraph cluster_31 { + color=red + 86 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 87 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 86 -> {87}; + + subgraph cluster_32 { + color=red + 88 [label="Enter property [2]" style="filled" fillcolor=red]; + 89 [label="Access qualifier /TokenType [2]"]; + 90 [label="Access variable R|/TokenType.Companion.MODIFIER_LIST| [2]"]; + 91 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 88 -> {89}; + 89 -> {90}; + 90 -> {91}; + 91 -> {67} [color=green]; + + subgraph cluster_33 { + color=red + 92 [label="Enter class TokenType [1]" style="filled" fillcolor=red]; + 93 [label="Exit class TokenType [1]" style="filled" fillcolor=red]; + } + 92 -> {93} [color=green]; + + subgraph cluster_34 { + color=red + 94 [label="Enter function [2]" style="filled" fillcolor=red]; + 95 [label="Delegated constructor call: super() [2]"]; + 96 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 94 -> {95}; + 95 -> {96}; + + subgraph cluster_35 { + color=red + 97 [label="Enter class Companion [2]" style="filled" fillcolor=red]; + 98 [label="Part of class initialization [2]"]; + 99 [label="Exit class Companion [2]" style="filled" fillcolor=red]; + } + 97 -> {98} [color=green]; + 98 -> {99} [style=dotted]; + 98 -> {105} [color=green]; + 98 -> {105} [style=dashed]; + + subgraph cluster_36 { + color=red + 100 [label="Enter function [3]" style="filled" fillcolor=red]; + 101 [label="Delegated constructor call: super() [3]"]; + 102 [label="Exit function [3]" style="filled" fillcolor=red]; + } + 100 -> {101}; + 101 -> {102}; + + subgraph cluster_37 { + color=red + 103 [label="Enter function getter [4]" style="filled" fillcolor=red]; + 104 [label="Exit function getter [4]" style="filled" fillcolor=red]; + } + 103 -> {104}; + + subgraph cluster_38 { + color=red + 105 [label="Enter property [3]" style="filled" fillcolor=red]; + 106 [label="Function call: R|/TokenType.TokenType|() [3]"]; + 107 [label="Exit property [3]" style="filled" fillcolor=red]; + } + 105 -> {106}; + 106 -> {107}; + 107 -> {99} [color=green]; + + subgraph cluster_39 { + color=red + 108 [label="Enter class KtModifierKeywordToken [1]" style="filled" fillcolor=red]; + 109 [label="Exit class KtModifierKeywordToken [1]" style="filled" fillcolor=red]; + } + 108 -> {109} [color=green]; + + subgraph cluster_40 { + color=red + 110 [label="Enter function [2]" style="filled" fillcolor=red]; + 111 [label="Delegated constructor call: super() [2]"]; + 112 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 110 -> {111}; + 111 -> {112}; + + subgraph cluster_41 { + color=red + 113 [label="Enter class KtModifierList [1]" style="filled" fillcolor=red]; + 114 [label="Exit class KtModifierList [1]" style="filled" fillcolor=red]; + } + 113 -> {114} [color=green]; + + subgraph cluster_42 { + color=red + 115 [label="Enter function [2]" style="filled" fillcolor=red]; + 116 [label="Delegated constructor call: super() [2]"]; + 117 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 115 -> {116}; + 116 -> {117}; + + subgraph cluster_43 { + color=red + 118 [label="Enter class KtModifierListOwner [1]" style="filled" fillcolor=red]; + 119 [label="Part of class initialization [1]"]; + 120 [label="Exit class KtModifierListOwner [1]" style="filled" fillcolor=red]; + } + 118 -> {119} [color=green]; + 119 -> {120} [style=dotted]; + 119 -> {126} [color=green]; + 119 -> {126} [style=dashed]; + + subgraph cluster_44 { + color=red + 121 [label="Enter function [2]" style="filled" fillcolor=red]; + 122 [label="Delegated constructor call: super() [2]"]; + 123 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 121 -> {122}; + 122 -> {123}; + + subgraph cluster_45 { + color=red + 124 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 125 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 124 -> {125}; + + subgraph cluster_46 { + color=red + 126 [label="Enter property [2]" style="filled" fillcolor=red]; + 127 [label="Function call: R|/KtModifierList.KtModifierList|() [2]"]; + 128 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 126 -> {127}; + 127 -> {128}; + 128 -> {120} [color=green]; + + subgraph cluster_47 { + color=red + 129 [label="Enter class FirModifier [1]" style="filled" fillcolor=red]; + 130 [label="Part of class initialization [1]"]; + 131 [label="Part of class initialization [1]"]; + 132 [label="Exit class FirModifier [1]" style="filled" fillcolor=red]; + } + 129 -> {130} [color=green]; + 130 -> {131} [style=dotted]; + 130 -> {138} [color=green]; + 130 -> {138} [style=dashed]; + 131 -> {132} [style=dotted]; + 131 -> {143} [color=green]; + 131 -> {143} [style=dashed]; + + subgraph cluster_48 { + color=red + 133 [label="Enter function [2]" style="filled" fillcolor=red]; + 134 [label="Delegated constructor call: super() [2]"]; + 135 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 133 -> {134}; + 134 -> {135}; + + subgraph cluster_49 { + color=red + 136 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 137 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 136 -> {137}; + + subgraph cluster_50 { + color=red + 138 [label="Enter property [2]" style="filled" fillcolor=red]; + 139 [label="Access variable R|/node| [2]"]; + 140 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 138 -> {139}; + 139 -> {140}; + 140 -> {131} [color=green]; + + subgraph cluster_51 { + color=red + 141 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 142 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 141 -> {142}; + + subgraph cluster_52 { + color=red + 143 [label="Enter property [2]" style="filled" fillcolor=red]; + 144 [label="Access variable R|/token| [2]"]; + 145 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 143 -> {144}; + 144 -> {145}; + 145 -> {132} [color=green]; + + subgraph cluster_53 { + color=red + 146 [label="Enter class FirPsiModifier [2]" style="filled" fillcolor=red]; + 147 [label="Exit class FirPsiModifier [2]" style="filled" fillcolor=red]; + } + 146 -> {147} [color=green]; + + subgraph cluster_54 { + color=red + 148 [label="Enter function [3]" style="filled" fillcolor=red]; + 149 [label="Access variable R|/node| [4]"]; + 150 [label="Access variable R|/token| [4]"]; + 151 [label="Delegated constructor call: super|>(...) [3]"]; + 152 [label="Exit function [3]" style="filled" fillcolor=red]; + } + 148 -> {149}; + 149 -> {150}; + 150 -> {151}; + 151 -> {152}; + + subgraph cluster_55 { + color=red + 153 [label="Enter class FirLightModifier [2]" style="filled" fillcolor=red]; + 154 [label="Part of class initialization [2]"]; + 155 [label="Exit class FirLightModifier [2]" style="filled" fillcolor=red]; + } + 153 -> {154} [color=green]; + 154 -> {155} [style=dotted]; + 154 -> {163} [color=green]; + 154 -> {163} [style=dashed]; + + subgraph cluster_56 { + color=red + 156 [label="Enter function [3]" style="filled" fillcolor=red]; + 157 [label="Access variable R|/node| [4]"]; + 158 [label="Access variable R|/token| [4]"]; + 159 [label="Delegated constructor call: super|>(...) [3]"]; + 160 [label="Exit function [3]" style="filled" fillcolor=red]; + } + 156 -> {157}; + 157 -> {158}; + 158 -> {159}; + 159 -> {160}; + + subgraph cluster_57 { + color=red + 161 [label="Enter function getter [4]" style="filled" fillcolor=red]; + 162 [label="Exit function getter [4]" style="filled" fillcolor=red]; + } + 161 -> {162}; + + subgraph cluster_58 { + color=red + 163 [label="Enter property [3]" style="filled" fillcolor=red]; + 164 [label="Access variable R|/tree| [3]"]; + 165 [label="Exit property [3]" style="filled" fillcolor=red]; + } + 163 -> {164}; + 164 -> {165}; + 165 -> {155} [color=green]; + + subgraph cluster_59 { + color=red + 166 [label="Enter class FirModifierList [1]" style="filled" fillcolor=red]; + 167 [label="Part of class initialization [1]"]; + 168 [label="Exit class FirModifierList [1]" style="filled" fillcolor=red]; + } + 166 -> {167} [color=green]; + 167 -> {168} [style=dotted]; + 167 -> {174} [color=green]; + 167 -> {174} [style=dashed]; + + subgraph cluster_60 { + color=red + 169 [label="Enter function [2]" style="filled" fillcolor=red]; + 170 [label="Delegated constructor call: super() [2]"]; + 171 [label="Exit function [2]" style="filled" fillcolor=red]; + } + 169 -> {170}; + 170 -> {171}; + + subgraph cluster_61 { + color=red + 172 [label="Enter function getter [3]" style="filled" fillcolor=red]; + 173 [label="Exit function getter [3]" style="filled" fillcolor=red]; + } + 172 -> {173}; + + subgraph cluster_62 { + color=red + 174 [label="Enter property [2]" style="filled" fillcolor=red]; + 175 [label="Function call: R|kotlin/collections/emptyList||>() [2]"]; + 176 [label="Exit property [2]" style="filled" fillcolor=red]; + } + 174 -> {175}; + 175 -> {176}; + 176 -> {168} [color=green]; + + subgraph cluster_63 { + color=red + 177 [label="Enter class FirPsiModifierList [2]" style="filled" fillcolor=red]; + 178 [label="Part of class initialization [2]"]; + 179 [label="Exit class FirPsiModifierList [2]" style="filled" fillcolor=red]; + } + 177 -> {178} [color=green]; + 178 -> {179} [style=dotted]; + 178 -> {185} [color=green]; + 178 -> {185} [style=dashed]; + + subgraph cluster_64 { + color=red + 180 [label="Enter function [3]" style="filled" fillcolor=red]; + 181 [label="Delegated constructor call: super() [3]"]; + 182 [label="Exit function [3]" style="filled" fillcolor=red]; + } + 180 -> {181}; + 181 -> {182}; + + subgraph cluster_65 { + color=red + 183 [label="Enter function getter [4]" style="filled" fillcolor=red]; + 184 [label="Exit function getter [4]" style="filled" fillcolor=red]; + } + 183 -> {184}; + + subgraph cluster_66 { + color=red + 185 [label="Enter property [3]" style="filled" fillcolor=red]; + 186 [label="Access variable R|/modifierList| [3]"]; + 187 [label="Exit property [3]" style="filled" fillcolor=red]; + } + 185 -> {186}; + 186 -> {187}; + 187 -> {179} [color=green]; + + subgraph cluster_67 { + color=red + 188 [label="Enter class FirLightModifierList [2]" style="filled" fillcolor=red]; + 189 [label="Part of class initialization [2]"]; + 190 [label="Part of class initialization [2]"]; + 191 [label="Exit class FirLightModifierList [2]" style="filled" fillcolor=red]; + } + 188 -> {189} [color=green]; + 189 -> {190} [style=dotted]; + 189 -> {197} [color=green]; + 189 -> {197} [style=dashed]; + 190 -> {191} [style=dotted]; + 190 -> {202} [color=green]; + 190 -> {202} [style=dashed]; + + subgraph cluster_68 { + color=red + 192 [label="Enter function [3]" style="filled" fillcolor=red]; + 193 [label="Delegated constructor call: super() [3]"]; + 194 [label="Exit function [3]" style="filled" fillcolor=red]; + } + 192 -> {193}; + 193 -> {194}; + + subgraph cluster_69 { + color=red + 195 [label="Enter function getter [4]" style="filled" fillcolor=red]; + 196 [label="Exit function getter [4]" style="filled" fillcolor=red]; + } + 195 -> {196}; + + subgraph cluster_70 { + color=red + 197 [label="Enter property [3]" style="filled" fillcolor=red]; + 198 [label="Access variable R|/modifierList| [3]"]; + 199 [label="Exit property [3]" style="filled" fillcolor=red]; + } + 197 -> {198}; + 198 -> {199}; + 199 -> {190} [color=green]; + + subgraph cluster_71 { + color=red + 200 [label="Enter function getter [4]" style="filled" fillcolor=red]; + 201 [label="Exit function getter [4]" style="filled" fillcolor=red]; + } + 200 -> {201}; + + subgraph cluster_72 { + color=red + 202 [label="Enter property [3]" style="filled" fillcolor=red]; + 203 [label="Access variable R|/tree| [3]"]; + 204 [label="Exit property [3]" style="filled" fillcolor=red]; + } + 202 -> {203}; + 203 -> {204}; + 204 -> {191} [color=green]; + + subgraph cluster_73 { + color=red + 205 [label="Enter class Companion [2]" style="filled" fillcolor=red]; + 206 [label="Exit class Companion [2]" style="filled" fillcolor=red]; + } + 205 -> {206} [color=green]; + + subgraph cluster_74 { + color=red + 207 [label="Enter function [3]" style="filled" fillcolor=red]; + 208 [label="Delegated constructor call: super() [3]"]; + 209 [label="Exit function [3]" style="filled" fillcolor=red]; + } + 207 -> {208}; + 208 -> {209}; + + subgraph cluster_75 { + color=red + 210 [label="Enter function getModifierList [3]" style="filled" fillcolor=red]; + subgraph cluster_76 { + color=blue + 211 [label="Enter block [3]"]; + subgraph cluster_77 { + color=blue + 212 [label="Enter when [3]"]; + 213 [label="Access variable this@R|/FirModifierList.Companion.getModifierList| [4]"]; + subgraph cluster_78 { + color=blue + 214 [label="Enter when branch condition [4]"]; + 215 [label="Const: Null(null) [5]"]; + 216 [label="Equality operator == [5]"]; + 217 [label="Exit when branch condition [4]"]; + } + subgraph cluster_79 { + color=blue + 218 [label="Enter when branch condition [4]"]; + 219 [label="Type operator: ($subj$ is R|FirPsiSourceElement|) [5]"]; + 220 [label="Exit when branch condition [4]"]; + } + subgraph cluster_80 { + color=blue + 221 [label="Enter when branch condition [4]"]; + 222 [label="Type operator: ($subj$ is R|FirLightSourceElement|) [5]"]; + 223 [label="Exit when branch condition [4]"]; + } + 224 [label="Enter when branch result [5]"]; + subgraph cluster_81 { + color=blue + 225 [label="Enter block [7]"]; + 226 [label="Access variable R|/FirLightSourceElement.lighterASTNode| [9]"]; + 227 [label="Access variable R|/FirLightSourceElement.treeStructure| [9]"]; + 228 [label="Function call: this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(...) [8]"]; + 229 [label="Postponed enter to lambda [8]"]; + subgraph cluster_82 { + color=blue + 275 [label="Enter function anonymousFunction [9]" style="filled" fillcolor=red]; + subgraph cluster_83 { + color=blue + 276 [label="Enter block [9]"]; + 277 [label="Access variable R|/it| [9]"]; + 278 [label="Enter safe call [9]"]; + 279 [label="Access variable R|/LighterASTNode.tokenType| [9]"]; + 280 [label="Exit safe call [9]"]; + 281 [label="Access qualifier /TokenType [9]"]; + 282 [label="Access variable R|/TokenType.Companion.MODIFIER_LIST| [9]"]; + 283 [label="Equality operator == [9]"]; + 284 [label="Exit block [9]"]; + } + 285 [label="Exit function anonymousFunction [9]" style="filled" fillcolor=red]; + } + 230 [label="Postponed exit from lambda [8]"]; + 231 [label="Function call: this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(...).R|kotlin/collections/find|(...) [7]"]; + 232 [label="Exit lhs of ?: [7]"]; + 233 [label="Enter rhs of ?: [7]"]; + 234 [label="Const: Null(null) [7]"]; + 235 [label="Jump: ^getModifierList Null(null) [7]"]; + 236 [label="Stub [7]" style="filled" fillcolor=gray]; + 237 [label="Lhs of ?: is not null [7]"]; + 238 [label="Exit ?: [7]"]; + 239 [label="Variable declaration: lval modifierListNode: R|LighterASTNode| [7]"]; + 240 [label="Access variable R|/modifierListNode| [8]"]; + 241 [label="Access variable R|/FirLightSourceElement.treeStructure| [8]"]; + 242 [label="Function call: R|/FirModifierList.FirLightModifierList.FirLightModifierList|(...) [7]"]; + 243 [label="Exit block [7]"]; + } + 244 [label="Exit when branch result [6]"]; + 245 [label="Enter when branch result [5]"]; + subgraph cluster_84 { + color=blue + 246 [label="Enter block [6]"]; + 247 [label="Access variable R|/FirPsiSourceElement.psi| [6]"]; + 248 [label="Type operator: (this@R|/FirModifierList.Companion.getModifierList|.R|/FirPsiSourceElement.psi| as? R|KtModifierListOwner|) [6]"]; + 249 [label="Enter safe call [6]"]; + 250 [label="Access variable R|/KtModifierListOwner.modifierList| [6]"]; + 251 [label="Exit safe call [6]"]; + 252 [label="Enter safe call [6]"]; + 253 [label="Postponed enter to lambda [7]"]; + subgraph cluster_85 { + color=blue + 269 [label="Enter function anonymousFunction [8]" style="filled" fillcolor=red]; + subgraph cluster_86 { + color=blue + 270 [label="Enter block [8]"]; + 271 [label="Access variable R|/it| [9]"]; + 272 [label="Function call: R|/FirModifierList.FirPsiModifierList.FirPsiModifierList|(...) [8]"]; + 273 [label="Exit block [8]"]; + } + 274 [label="Exit function anonymousFunction [8]" style="filled" fillcolor=red]; + } + 254 [label="Postponed exit from lambda [7]"]; + 255 [label="Function call: $subj$.R|kotlin/let|(...) [6]"]; + 256 [label="Exit safe call [6]"]; + 257 [label="Exit block [6]"]; + } + 258 [label="Exit when branch result [5]"]; + 259 [label="Enter when branch result [5]"]; + subgraph cluster_87 { + color=blue + 260 [label="Enter block [5]"]; + 261 [label="Const: Null(null) [5]"]; + 262 [label="Exit block [5]"]; + } + 263 [label="Exit when branch result [4]"]; + 264 [label="Exit when [3]"]; + } + 265 [label="Jump: ^getModifierList when (this@R|/FirModifierList.Companion.getModifierList|) { + ==($subj$, Null(null)) -> { + Null(null) + } + ($subj$ is R|FirPsiSourceElement|) -> { + (this@R|/FirModifierList.Companion.getModifierList|.R|/FirPsiSourceElement.psi| as? R|KtModifierListOwner|)?.{ $subj$.R|/KtModifierListOwner.modifierList| }?.{ $subj$.R|kotlin/let|( = let@fun (it: R|KtModifierList|): R|FirModifierList.FirPsiModifierList| { + ^ R|/FirModifierList.FirPsiModifierList.FirPsiModifierList|(R|/it|) + } + ) } + } + ($subj$ is R|FirLightSourceElement|) -> { + lval modifierListNode: R|LighterASTNode| = this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.treeStructure|).R|kotlin/collections/find|( = find@fun (it: R|LighterASTNode?|): R|kotlin/Boolean| { + ^ ==(R|/it|?.{ $subj$.R|/LighterASTNode.tokenType| }, Q|TokenType|.R|/TokenType.Companion.MODIFIER_LIST|) + } + ) ?: ^getModifierList Null(null) + R|/FirModifierList.FirLightModifierList.FirLightModifierList|(R|/modifierListNode|, this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.treeStructure|) + } +} + [3]"]; + 266 [label="Stub [3]" style="filled" fillcolor=gray]; + 267 [label="Exit block [3]" style="filled" fillcolor=gray]; + } + 268 [label="Exit function getModifierList [3]" style="filled" fillcolor=red]; + } + 210 -> {211}; + 211 -> {212}; + 212 -> {213}; + 213 -> {214}; + 214 -> {215}; + 215 -> {216}; + 216 -> {217}; + 217 -> {259 218}; + 218 -> {219}; + 219 -> {220}; + 220 -> {245 221}; + 221 -> {222}; + 222 -> {223}; + 223 -> {224}; + 224 -> {225}; + 225 -> {226}; + 226 -> {227}; + 227 -> {228}; + 228 -> {229}; + 229 -> {275}; + 229 -> {230} [color=red]; + 229 -> {275} [style=dashed]; + 230 -> {231}; + 231 -> {232}; + 232 -> {237 233}; + 233 -> {234}; + 234 -> {235}; + 235 -> {268}; + 235 -> {236} [style=dotted]; + 236 -> {238} [style=dotted]; + 237 -> {238}; + 238 -> {239}; + 239 -> {240}; + 240 -> {241}; + 241 -> {242}; + 242 -> {243}; + 243 -> {244}; + 244 -> {264}; + 245 -> {246}; + 246 -> {247}; + 247 -> {248}; + 248 -> {249 251}; + 249 -> {250}; + 250 -> {251}; + 251 -> {252 256}; + 252 -> {253}; + 253 -> {269}; + 253 -> {254} [color=red]; + 253 -> {269} [style=dashed]; + 254 -> {255}; + 255 -> {256}; + 256 -> {257}; + 257 -> {258}; + 258 -> {264}; + 259 -> {260}; + 260 -> {261}; + 261 -> {262}; + 262 -> {263}; + 263 -> {264}; + 264 -> {265}; + 265 -> {268}; + 265 -> {266} [style=dotted]; + 266 -> {267} [style=dotted]; + 267 -> {268} [style=dotted]; + 269 -> {270}; + 270 -> {271}; + 271 -> {272}; + 272 -> {273}; + 273 -> {274}; + 274 -> {254} [color=green]; + 275 -> {285 276}; + 276 -> {277}; + 277 -> {278 280}; + 278 -> {279}; + 279 -> {280}; + 280 -> {281}; + 281 -> {282}; + 282 -> {283}; + 283 -> {284}; + 284 -> {285}; + 285 -> {230} [color=green]; + 285 -> {275} [color=green style=dashed]; + + subgraph cluster_88 { + color=red + 286 [label="Enter function boxImpl [3]" style="filled" fillcolor=red]; + subgraph cluster_89 { + color=blue + 287 [label="Enter block [3]"]; + 288 [label="Function call: R|/LighterASTNode.LighterASTNode|() [6]"]; + 289 [label="Function call: R|kotlin/collections/listOf|(...) [5]"]; + 290 [label="Function call: R|/LighterASTNode.LighterASTNode|(...) [4]"]; + 291 [label="Function call: R|/FlyweightCapableTreeStructure.FlyweightCapableTreeStructure|() [4]"]; + 292 [label="Function call: R|/FirLightSourceElement.FirLightSourceElement|(...) [3]"]; + 293 [label="Variable declaration: lval sourceElement: R|FirSourceElement?| [3]"]; + 294 [label="Access variable R|/sourceElement| [4]"]; + 295 [label="Function call: (this@R|/FirModifierList.Companion|, R|/sourceElement|).R|/FirModifierList.Companion.getModifierList|() [3]"]; + 296 [label="Variable declaration: lval result: R|FirModifierList?| [3]"]; + subgraph cluster_90 { + color=blue + 297 [label="Enter when [3]"]; + subgraph cluster_91 { + color=blue + 298 [label="Enter when branch condition [4]"]; + 299 [label="Access variable R|/result| [5]"]; + 300 [label="Type operator: (R|/result| is R|FirModifierList.FirLightModifierList|) [5]"]; + 301 [label="Exit when branch condition [4]"]; + } + subgraph cluster_92 { + color=blue + 302 [label="Enter when branch condition else [4]"]; + 303 [label="Exit when branch condition [4]"]; + } + 304 [label="Enter when branch result [5]"]; + subgraph cluster_93 { + color=blue + 305 [label="Enter block [6]"]; + 306 [label="Const: String(Fail) [6]"]; + 307 [label="Exit block [6]"]; + } + 308 [label="Exit when branch result [5]"]; + 309 [label="Enter when branch result [5]"]; + subgraph cluster_94 { + color=blue + 310 [label="Enter block [5]"]; + 311 [label="Const: String(OK) [5]"]; + 312 [label="Exit block [5]"]; + } + 313 [label="Exit when branch result [4]"]; + 314 [label="Exit when [3]"]; + } + 315 [label="Jump: ^boxImpl when () { + (R|/result| is R|FirModifierList.FirLightModifierList|) -> { + String(OK) + } + else -> { + String(Fail) + } +} + [3]"]; + 316 [label="Stub [3]" style="filled" fillcolor=gray]; + 317 [label="Exit block [3]" style="filled" fillcolor=gray]; + } + 318 [label="Exit function boxImpl [3]" style="filled" fillcolor=red]; + } + 286 -> {287}; + 287 -> {288}; + 288 -> {289}; + 289 -> {290}; + 290 -> {291}; + 291 -> {292}; + 292 -> {293}; + 293 -> {294}; + 294 -> {295}; + 295 -> {296}; + 296 -> {297}; + 297 -> {298}; + 298 -> {299}; + 299 -> {300}; + 300 -> {301}; + 301 -> {309 302}; + 302 -> {303}; + 303 -> {304}; + 304 -> {305}; + 305 -> {306}; + 306 -> {307}; + 307 -> {308}; + 308 -> {314}; + 309 -> {310}; + 310 -> {311}; + 311 -> {312}; + 312 -> {313}; + 313 -> {314}; + 314 -> {315}; + 315 -> {318}; + 315 -> {316} [style=dotted]; + 316 -> {317} [style=dotted]; + 317 -> {318} [style=dotted]; + + subgraph cluster_95 { + color=red + 319 [label="Enter function box [1]" style="filled" fillcolor=red]; + subgraph cluster_96 { + color=blue + 320 [label="Enter block [1]"]; + 321 [label="Access qualifier /FirModifierList [2]"]; + 322 [label="Function call: Q|FirModifierList|.R|/FirModifierList.Companion.boxImpl|() [1]"]; + 323 [label="Jump: ^box Q|FirModifierList|.R|/FirModifierList.Companion.boxImpl|() [1]"]; + 324 [label="Stub [1]" style="filled" fillcolor=gray]; + 325 [label="Exit block [1]" style="filled" fillcolor=gray]; + } + 326 [label="Exit function box [1]" style="filled" fillcolor=red]; + } + 319 -> {320}; + 320 -> {321}; + 321 -> {322}; + 322 -> {323}; + 323 -> {326}; + 323 -> {324} [style=dotted]; + 324 -> {325} [style=dotted]; + 325 -> {326} [style=dotted]; + +} diff --git a/compiler/testData/codegen/box/smartCasts/kt44814.fir.txt b/compiler/testData/codegen/box/smartCasts/kt44814.fir.txt new file mode 100644 index 00000000000..3a7a063cd9d --- /dev/null +++ b/compiler/testData/codegen/box/smartCasts/kt44814.fir.txt @@ -0,0 +1,762 @@ +FILE fqName: fileName:/kt44814.kt + CLASS CLASS name:FlyweightCapableTreeStructure modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FlyweightCapableTreeStructure + CONSTRUCTOR visibility:public <> () returnType:.FlyweightCapableTreeStructure [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FlyweightCapableTreeStructure modality:FINAL visibility:public superTypes:[kotlin.Any]' + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirSourceElement + CONSTRUCTOR visibility:protected <> () returnType:.FirSourceElement [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any]' + PROPERTY name:lighterASTNode visibility:public modality:ABSTRACT [val] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.FirSourceElement) returnType:.LighterASTNode + correspondingProperty: PROPERTY name:lighterASTNode visibility:public modality:ABSTRACT [val] + $this: VALUE_PARAMETER name: type:.FirSourceElement + PROPERTY name:treeStructure visibility:public modality:ABSTRACT [val] + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT <> ($this:.FirSourceElement) returnType:.FlyweightCapableTreeStructure + correspondingProperty: PROPERTY name:treeStructure visibility:public modality:ABSTRACT [val] + $this: VALUE_PARAMETER name: type:.FirSourceElement + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirPsiSourceElement + CONSTRUCTOR visibility:public <> (psi:.PsiElement, lighterASTNode:.LighterASTNode, treeStructure:.FlyweightCapableTreeStructure) returnType:.FirPsiSourceElement [primary] + VALUE_PARAMETER name:psi index:0 type:.PsiElement + VALUE_PARAMETER name:lighterASTNode index:1 type:.LighterASTNode + VALUE_PARAMETER name:treeStructure index:2 type:.FlyweightCapableTreeStructure + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor () [primary] declared in .FirSourceElement' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement]' + PROPERTY name:psi visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:psi type:.PsiElement visibility:private [final] + EXPRESSION_BODY + GET_VAR 'psi: .PsiElement declared in .FirPsiSourceElement.' type=.PsiElement origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirPsiSourceElement) returnType:.PsiElement + correspondingProperty: PROPERTY name:psi visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirPsiSourceElement + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .PsiElement declared in .FirPsiSourceElement' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:psi type:.PsiElement visibility:private [final]' type=.PsiElement origin=null + receiver: GET_VAR ': .FirPsiSourceElement declared in .FirPsiSourceElement.' type=.FirPsiSourceElement origin=null + PROPERTY name:lighterASTNode visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:lighterASTNode type:.LighterASTNode visibility:private [final] + EXPRESSION_BODY + GET_VAR 'lighterASTNode: .LighterASTNode declared in .FirPsiSourceElement.' type=.LighterASTNode origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirPsiSourceElement) returnType:.LighterASTNode + correspondingProperty: PROPERTY name:lighterASTNode visibility:public modality:FINAL [val] + overridden: + public abstract fun (): .LighterASTNode declared in .FirSourceElement + $this: VALUE_PARAMETER name: type:.FirPsiSourceElement + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .LighterASTNode declared in .FirPsiSourceElement' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:lighterASTNode type:.LighterASTNode visibility:private [final]' type=.LighterASTNode origin=null + receiver: GET_VAR ': .FirPsiSourceElement declared in .FirPsiSourceElement.' type=.FirPsiSourceElement origin=null + PROPERTY name:treeStructure visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:treeStructure type:.FlyweightCapableTreeStructure visibility:private [final] + EXPRESSION_BODY + GET_VAR 'treeStructure: .FlyweightCapableTreeStructure declared in .FirPsiSourceElement.' type=.FlyweightCapableTreeStructure origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirPsiSourceElement) returnType:.FlyweightCapableTreeStructure + correspondingProperty: PROPERTY name:treeStructure visibility:public modality:FINAL [val] + overridden: + public abstract fun (): .FlyweightCapableTreeStructure declared in .FirSourceElement + $this: VALUE_PARAMETER name: type:.FirPsiSourceElement + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .FlyweightCapableTreeStructure declared in .FirPsiSourceElement' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:treeStructure type:.FlyweightCapableTreeStructure visibility:private [final]' type=.FlyweightCapableTreeStructure origin=null + receiver: GET_VAR ': .FirPsiSourceElement declared in .FirPsiSourceElement.' type=.FirPsiSourceElement origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirLightSourceElement + CONSTRUCTOR visibility:public <> (lighterASTNode:.LighterASTNode, treeStructure:.FlyweightCapableTreeStructure) returnType:.FirLightSourceElement [primary] + VALUE_PARAMETER name:lighterASTNode index:0 type:.LighterASTNode + VALUE_PARAMETER name:treeStructure index:1 type:.FlyweightCapableTreeStructure + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor () [primary] declared in .FirSourceElement' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement]' + PROPERTY name:lighterASTNode visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:lighterASTNode type:.LighterASTNode visibility:private [final] + EXPRESSION_BODY + GET_VAR 'lighterASTNode: .LighterASTNode declared in .FirLightSourceElement.' type=.LighterASTNode origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirLightSourceElement) returnType:.LighterASTNode + correspondingProperty: PROPERTY name:lighterASTNode visibility:public modality:FINAL [val] + overridden: + public abstract fun (): .LighterASTNode declared in .FirSourceElement + $this: VALUE_PARAMETER name: type:.FirLightSourceElement + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .LighterASTNode declared in .FirLightSourceElement' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:lighterASTNode type:.LighterASTNode visibility:private [final]' type=.LighterASTNode origin=null + receiver: GET_VAR ': .FirLightSourceElement declared in .FirLightSourceElement.' type=.FirLightSourceElement origin=null + PROPERTY name:treeStructure visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:treeStructure type:.FlyweightCapableTreeStructure visibility:private [final] + EXPRESSION_BODY + GET_VAR 'treeStructure: .FlyweightCapableTreeStructure declared in .FirLightSourceElement.' type=.FlyweightCapableTreeStructure origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirLightSourceElement) returnType:.FlyweightCapableTreeStructure + correspondingProperty: PROPERTY name:treeStructure visibility:public modality:FINAL [val] + overridden: + public abstract fun (): .FlyweightCapableTreeStructure declared in .FirSourceElement + $this: VALUE_PARAMETER name: type:.FirLightSourceElement + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .FlyweightCapableTreeStructure declared in .FirLightSourceElement' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:treeStructure type:.FlyweightCapableTreeStructure visibility:private [final]' type=.FlyweightCapableTreeStructure origin=null + receiver: GET_VAR ': .FirLightSourceElement declared in .FirLightSourceElement.' type=.FirLightSourceElement origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:PsiElement modality:OPEN visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.PsiElement + CONSTRUCTOR visibility:public <> () returnType:.PsiElement [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:PsiElement modality:OPEN visibility:public superTypes:[kotlin.Any]' + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:ASTNode modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.ASTNode + CONSTRUCTOR visibility:public <> () returnType:.ASTNode [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ASTNode modality:FINAL visibility:public superTypes:[kotlin.Any]' + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:LighterASTNode modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.LighterASTNode + CONSTRUCTOR visibility:public <> (_children:kotlin.collections.List<.LighterASTNode?>) returnType:.LighterASTNode [primary] + VALUE_PARAMETER name:_children index:0 type:kotlin.collections.List<.LighterASTNode?> + EXPRESSION_BODY + CALL 'public final fun emptyList (): kotlin.collections.List declared in kotlin.collections.CollectionsKt' type=kotlin.collections.List<.LighterASTNode?> origin=null + : .LighterASTNode? + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:LighterASTNode modality:FINAL visibility:public superTypes:[kotlin.Any]' + PROPERTY name:_children visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:_children type:kotlin.collections.List<.LighterASTNode?> visibility:private [final] + EXPRESSION_BODY + GET_VAR '_children: kotlin.collections.List<.LighterASTNode?> declared in .LighterASTNode.' type=kotlin.collections.List<.LighterASTNode?> origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.LighterASTNode) returnType:kotlin.collections.List<.LighterASTNode?> + correspondingProperty: PROPERTY name:_children visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.LighterASTNode + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List<.LighterASTNode?> declared in .LighterASTNode' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:_children type:kotlin.collections.List<.LighterASTNode?> visibility:private [final]' type=kotlin.collections.List<.LighterASTNode?> origin=null + receiver: GET_VAR ': .LighterASTNode declared in .LighterASTNode.' type=.LighterASTNode origin=null + FUN name:getChildren visibility:public modality:FINAL <> ($this:.LighterASTNode, treeStructure:.FlyweightCapableTreeStructure) returnType:kotlin.collections.List<.LighterASTNode?> + $this: VALUE_PARAMETER name: type:.LighterASTNode + VALUE_PARAMETER name:treeStructure index:0 type:.FlyweightCapableTreeStructure + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun getChildren (treeStructure: .FlyweightCapableTreeStructure): kotlin.collections.List<.LighterASTNode?> declared in .LighterASTNode' + CALL 'public final fun (): kotlin.collections.List<.LighterASTNode?> declared in .LighterASTNode' type=kotlin.collections.List<.LighterASTNode?> origin=GET_PROPERTY + $this: GET_VAR ': .LighterASTNode declared in .LighterASTNode.getChildren' type=.LighterASTNode origin=null + PROPERTY name:tokenType visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:tokenType type:.TokenType visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun (): .TokenType declared in .TokenType.Companion' type=.TokenType origin=GET_PROPERTY + $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=.TokenType.Companion + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.LighterASTNode) returnType:.TokenType + correspondingProperty: PROPERTY name:tokenType visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.LighterASTNode + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .TokenType declared in .LighterASTNode' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:tokenType type:.TokenType visibility:private [final]' type=.TokenType origin=null + receiver: GET_VAR ': .LighterASTNode declared in .LighterASTNode.' type=.LighterASTNode origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:TokenType modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.TokenType + CONSTRUCTOR visibility:public <> () returnType:.TokenType [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:TokenType modality:FINAL visibility:public superTypes:[kotlin.Any]' + CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.TokenType.Companion + CONSTRUCTOR visibility:private <> () returnType:.TokenType.Companion [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' + PROPERTY name:MODIFIER_LIST visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:MODIFIER_LIST type:.TokenType visibility:private [final] + EXPRESSION_BODY + CONSTRUCTOR_CALL 'public constructor () [primary] declared in .TokenType' type=.TokenType origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.TokenType.Companion) returnType:.TokenType + correspondingProperty: PROPERTY name:MODIFIER_LIST visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.TokenType.Companion + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .TokenType declared in .TokenType.Companion' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:MODIFIER_LIST type:.TokenType visibility:private [final]' type=.TokenType origin=null + receiver: GET_VAR ': .TokenType.Companion declared in .TokenType.Companion.' type=.TokenType.Companion origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:KtModifierKeywordToken modality:FINAL visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.KtModifierKeywordToken + CONSTRUCTOR visibility:public <> () returnType:.KtModifierKeywordToken [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:KtModifierKeywordToken modality:FINAL visibility:public superTypes:[kotlin.Any]' + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:KtModifierList modality:FINAL visibility:public superTypes:[.PsiElement] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.KtModifierList + CONSTRUCTOR visibility:public <> () returnType:.KtModifierList [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in .PsiElement' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:KtModifierList modality:FINAL visibility:public superTypes:[.PsiElement]' + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:KtModifierListOwner modality:FINAL visibility:public superTypes:[.PsiElement] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.KtModifierListOwner + CONSTRUCTOR visibility:public <> () returnType:.KtModifierListOwner [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in .PsiElement' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:KtModifierListOwner modality:FINAL visibility:public superTypes:[.PsiElement]' + PROPERTY name:modifierList visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:modifierList type:.KtModifierList visibility:private [final] + EXPRESSION_BODY + CONSTRUCTOR_CALL 'public constructor () [primary] declared in .KtModifierList' type=.KtModifierList origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.KtModifierListOwner) returnType:.KtModifierList + correspondingProperty: PROPERTY name:modifierList visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.KtModifierListOwner + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .KtModifierList declared in .KtModifierListOwner' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:modifierList type:.KtModifierList visibility:private [final]' type=.KtModifierList origin=null + receiver: GET_VAR ': .KtModifierListOwner declared in .KtModifierListOwner.' type=.KtModifierListOwner origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifier.FirModifier> + TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] + CONSTRUCTOR visibility:protected <> (node:Node of .FirModifier, token:.KtModifierKeywordToken) returnType:.FirModifier.FirModifier> [primary] + VALUE_PARAMETER name:node index:0 type:Node of .FirModifier + VALUE_PARAMETER name:token index:1 type:.KtModifierKeywordToken + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any]' + PROPERTY name:node visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:node type:Node of .FirModifier visibility:private [final] + EXPRESSION_BODY + GET_VAR 'node: Node of .FirModifier declared in .FirModifier.' type=Node of .FirModifier origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifier.FirModifier>) returnType:Node of .FirModifier + correspondingProperty: PROPERTY name:node visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifier.FirModifier> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): Node of .FirModifier declared in .FirModifier' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:node type:Node of .FirModifier visibility:private [final]' type=Node of .FirModifier origin=null + receiver: GET_VAR ': .FirModifier.FirModifier> declared in .FirModifier.' type=.FirModifier.FirModifier> origin=null + PROPERTY name:token visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:token type:.KtModifierKeywordToken visibility:private [final] + EXPRESSION_BODY + GET_VAR 'token: .KtModifierKeywordToken declared in .FirModifier.' type=.KtModifierKeywordToken origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifier.FirModifier>) returnType:.KtModifierKeywordToken + correspondingProperty: PROPERTY name:token visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifier.FirModifier> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .KtModifierKeywordToken declared in .FirModifier' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:token type:.KtModifierKeywordToken visibility:private [final]' type=.KtModifierKeywordToken origin=null + receiver: GET_VAR ': .FirModifier.FirModifier> declared in .FirModifier.' type=.FirModifier.FirModifier> origin=null + CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[.FirModifier<.ASTNode>] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifier.FirPsiModifier + CONSTRUCTOR visibility:public <> (node:.ASTNode, token:.KtModifierKeywordToken) returnType:.FirModifier.FirPsiModifier [primary] + VALUE_PARAMETER name:node index:0 type:.ASTNode + VALUE_PARAMETER name:token index:1 type:.KtModifierKeywordToken + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor (node: Node of .FirModifier, token: .KtModifierKeywordToken) [primary] declared in .FirModifier' + : .ASTNode + node: GET_VAR 'node: .ASTNode declared in .FirModifier.FirPsiModifier.' type=.ASTNode origin=null + token: GET_VAR 'token: .KtModifierKeywordToken declared in .FirModifier.FirPsiModifier.' type=.KtModifierKeywordToken origin=null + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[.FirModifier<.ASTNode>]' + PROPERTY FAKE_OVERRIDE name:node visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.FirModifier.FirModifier>) returnType:.ASTNode [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:node visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): Node of .FirModifier declared in .FirModifier + $this: VALUE_PARAMETER name: type:.FirModifier.FirModifier> + PROPERTY FAKE_OVERRIDE name:token visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.FirModifier.FirModifier>) returnType:.KtModifierKeywordToken [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:token visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): .KtModifierKeywordToken declared in .FirModifier + $this: VALUE_PARAMETER name: type:.FirModifier.FirModifier> + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[.FirModifier<.LighterASTNode>] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifier.FirLightModifier + CONSTRUCTOR visibility:public <> (node:.LighterASTNode, token:.KtModifierKeywordToken, tree:.FlyweightCapableTreeStructure) returnType:.FirModifier.FirLightModifier [primary] + VALUE_PARAMETER name:node index:0 type:.LighterASTNode + VALUE_PARAMETER name:token index:1 type:.KtModifierKeywordToken + VALUE_PARAMETER name:tree index:2 type:.FlyweightCapableTreeStructure + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor (node: Node of .FirModifier, token: .KtModifierKeywordToken) [primary] declared in .FirModifier' + : .LighterASTNode + node: GET_VAR 'node: .LighterASTNode declared in .FirModifier.FirLightModifier.' type=.LighterASTNode origin=null + token: GET_VAR 'token: .KtModifierKeywordToken declared in .FirModifier.FirLightModifier.' type=.KtModifierKeywordToken origin=null + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[.FirModifier<.LighterASTNode>]' + PROPERTY name:tree visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:tree type:.FlyweightCapableTreeStructure visibility:private [final] + EXPRESSION_BODY + GET_VAR 'tree: .FlyweightCapableTreeStructure declared in .FirModifier.FirLightModifier.' type=.FlyweightCapableTreeStructure origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifier.FirLightModifier) returnType:.FlyweightCapableTreeStructure + correspondingProperty: PROPERTY name:tree visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifier.FirLightModifier + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .FlyweightCapableTreeStructure declared in .FirModifier.FirLightModifier' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:tree type:.FlyweightCapableTreeStructure visibility:private [final]' type=.FlyweightCapableTreeStructure origin=null + receiver: GET_VAR ': .FirModifier.FirLightModifier declared in .FirModifier.FirLightModifier.' type=.FirModifier.FirLightModifier origin=null + PROPERTY FAKE_OVERRIDE name:node visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.FirModifier.FirModifier>) returnType:.LighterASTNode [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:node visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): Node of .FirModifier declared in .FirModifier + $this: VALUE_PARAMETER name: type:.FirModifier.FirModifier> + PROPERTY FAKE_OVERRIDE name:token visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.FirModifier.FirModifier>) returnType:.KtModifierKeywordToken [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:token visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): .KtModifierKeywordToken declared in .FirModifier + $this: VALUE_PARAMETER name: type:.FirModifier.FirModifier> + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifierList + CONSTRUCTOR visibility:protected <> () returnType:.FirModifierList [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any]' + PROPERTY name:modifiers visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:modifiers type:kotlin.collections.List<.FirModifier<*>> visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun emptyList (): kotlin.collections.List declared in kotlin.collections.CollectionsKt' type=kotlin.collections.List<.FirModifier<*>> origin=null + : .FirModifier<*> + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifierList) returnType:kotlin.collections.List<.FirModifier<*>> + correspondingProperty: PROPERTY name:modifiers visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifierList + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List<.FirModifier<*>> declared in .FirModifierList' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:modifiers type:kotlin.collections.List<.FirModifier<*>> visibility:private [final]' type=kotlin.collections.List<.FirModifier<*>> origin=null + receiver: GET_VAR ': .FirModifierList declared in .FirModifierList.' type=.FirModifierList origin=null + CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifierList.FirPsiModifierList + CONSTRUCTOR visibility:public <> (modifierList:.KtModifierList) returnType:.FirModifierList.FirPsiModifierList [primary] + VALUE_PARAMETER name:modifierList index:0 type:.KtModifierList + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor () [primary] declared in .FirModifierList' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[.FirModifierList]' + PROPERTY name:modifierList visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:modifierList type:.KtModifierList visibility:private [final] + EXPRESSION_BODY + GET_VAR 'modifierList: .KtModifierList declared in .FirModifierList.FirPsiModifierList.' type=.KtModifierList origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifierList.FirPsiModifierList) returnType:.KtModifierList + correspondingProperty: PROPERTY name:modifierList visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifierList.FirPsiModifierList + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .KtModifierList declared in .FirModifierList.FirPsiModifierList' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:modifierList type:.KtModifierList visibility:private [final]' type=.KtModifierList origin=null + receiver: GET_VAR ': .FirModifierList.FirPsiModifierList declared in .FirModifierList.FirPsiModifierList.' type=.FirModifierList.FirPsiModifierList origin=null + PROPERTY FAKE_OVERRIDE name:modifiers visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.FirModifierList) returnType:kotlin.collections.List<.FirModifier<*>> [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:modifiers visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.collections.List<.FirModifier<*>> declared in .FirModifierList + $this: VALUE_PARAMETER name: type:.FirModifierList + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifierList.FirLightModifierList + CONSTRUCTOR visibility:public <> (modifierList:.LighterASTNode, tree:.FlyweightCapableTreeStructure) returnType:.FirModifierList.FirLightModifierList [primary] + VALUE_PARAMETER name:modifierList index:0 type:.LighterASTNode + VALUE_PARAMETER name:tree index:1 type:.FlyweightCapableTreeStructure + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor () [primary] declared in .FirModifierList' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[.FirModifierList]' + PROPERTY name:modifierList visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:modifierList type:.LighterASTNode visibility:private [final] + EXPRESSION_BODY + GET_VAR 'modifierList: .LighterASTNode declared in .FirModifierList.FirLightModifierList.' type=.LighterASTNode origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifierList.FirLightModifierList) returnType:.LighterASTNode + correspondingProperty: PROPERTY name:modifierList visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifierList.FirLightModifierList + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .LighterASTNode declared in .FirModifierList.FirLightModifierList' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:modifierList type:.LighterASTNode visibility:private [final]' type=.LighterASTNode origin=null + receiver: GET_VAR ': .FirModifierList.FirLightModifierList declared in .FirModifierList.FirLightModifierList.' type=.FirModifierList.FirLightModifierList origin=null + PROPERTY name:tree visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:tree type:.FlyweightCapableTreeStructure visibility:private [final] + EXPRESSION_BODY + GET_VAR 'tree: .FlyweightCapableTreeStructure declared in .FirModifierList.FirLightModifierList.' type=.FlyweightCapableTreeStructure origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.FirModifierList.FirLightModifierList) returnType:.FlyweightCapableTreeStructure + correspondingProperty: PROPERTY name:tree visibility:public modality:FINAL [val] + $this: VALUE_PARAMETER name: type:.FirModifierList.FirLightModifierList + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .FlyweightCapableTreeStructure declared in .FirModifierList.FirLightModifierList' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:tree type:.FlyweightCapableTreeStructure visibility:private [final]' type=.FlyweightCapableTreeStructure origin=null + receiver: GET_VAR ': .FirModifierList.FirLightModifierList declared in .FirModifierList.FirLightModifierList.' type=.FirModifierList.FirLightModifierList origin=null + PROPERTY FAKE_OVERRIDE name:modifiers visibility:public modality:FINAL [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.FirModifierList) returnType:kotlin.collections.List<.FirModifier<*>> [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:modifiers visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): kotlin.collections.List<.FirModifier<*>> declared in .FirModifierList + $this: VALUE_PARAMETER name: type:.FirModifierList + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifierList.Companion + CONSTRUCTOR visibility:private <> () returnType:.FirModifierList.Companion [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' + FUN name:getModifierList visibility:public modality:FINAL <> ($this:.FirModifierList.Companion, $receiver:.FirSourceElement?) returnType:.FirModifierList? + $this: VALUE_PARAMETER name: type:.FirModifierList.Companion + $receiver: VALUE_PARAMETER name: type:.FirSourceElement? + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun getModifierList (): .FirModifierList? declared in .FirModifierList.Companion' + BLOCK type=.FirModifierList? origin=WHEN + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:.FirSourceElement? [val] + GET_VAR ': .FirSourceElement? declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + WHEN type=.FirModifierList? origin=WHEN + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_0: .FirSourceElement? [val] declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=.FirPsiSourceElement + GET_VAR 'val tmp_0: .FirSourceElement? [val] declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + then: BLOCK type=.FirModifierList.FirPsiModifierList? origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:.KtModifierList? [val] + BLOCK type=.KtModifierList? origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:.KtModifierListOwner? [val] + TYPE_OP type=.KtModifierListOwner? origin=SAFE_CAST typeOperand=.KtModifierListOwner + CALL 'public final fun (): .PsiElement declared in .FirPsiSourceElement' type=.PsiElement origin=GET_PROPERTY + $this: TYPE_OP type=.FirPsiSourceElement origin=IMPLICIT_CAST typeOperand=.FirPsiSourceElement + GET_VAR ': .FirSourceElement? declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + WHEN type=.KtModifierList? origin=null + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_2: .KtModifierListOwner? [val] declared in .FirModifierList.Companion.getModifierList' type=.KtModifierListOwner? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun (): .KtModifierList declared in .KtModifierListOwner' type=.KtModifierList origin=GET_PROPERTY + $this: GET_VAR 'val tmp_2: .KtModifierListOwner? [val] declared in .FirModifierList.Companion.getModifierList' type=.KtModifierListOwner? origin=null + WHEN type=.FirModifierList.FirPsiModifierList? origin=null + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_1: .KtModifierList? [val] declared in .FirModifierList.Companion.getModifierList' type=.KtModifierList? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun let (block: kotlin.Function1): R of kotlin.StandardKt.let [inline] declared in kotlin.StandardKt' type=.FirModifierList.FirPsiModifierList origin=null + : .KtModifierList + : .FirModifierList.FirPsiModifierList + $receiver: GET_VAR 'val tmp_1: .KtModifierList? [val] declared in .FirModifierList.Companion.getModifierList' type=.KtModifierList? origin=null + block: FUN_EXPR type=kotlin.Function1<.KtModifierList, .FirModifierList.FirPsiModifierList> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:.KtModifierList) returnType:.FirModifierList.FirPsiModifierList + VALUE_PARAMETER name:it index:0 type:.KtModifierList + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (it: .KtModifierList): .FirModifierList.FirPsiModifierList declared in .FirModifierList.Companion.getModifierList' + CONSTRUCTOR_CALL 'public constructor (modifierList: .KtModifierList) [primary] declared in .FirModifierList.FirPsiModifierList' type=.FirModifierList.FirPsiModifierList origin=null + modifierList: GET_VAR 'it: .KtModifierList declared in .FirModifierList.Companion.getModifierList.' type=.KtModifierList origin=null + BRANCH + if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=.FirLightSourceElement + GET_VAR 'val tmp_0: .FirSourceElement? [val] declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + then: BLOCK type=.FirModifierList.FirLightModifierList origin=null + VAR name:modifierListNode type:.LighterASTNode [val] + BLOCK type=.LighterASTNode origin=ELVIS + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:.LighterASTNode? [val] + CALL 'public final fun find (predicate: kotlin.Function1): T of kotlin.collections.CollectionsKt.find? [inline] declared in kotlin.collections.CollectionsKt' type=.LighterASTNode? origin=null + : .LighterASTNode? + $receiver: CALL 'public final fun getChildren (treeStructure: .FlyweightCapableTreeStructure): kotlin.collections.List<.LighterASTNode?> declared in .LighterASTNode' type=kotlin.collections.List<.LighterASTNode?> origin=null + $this: CALL 'public final fun (): .LighterASTNode declared in .FirLightSourceElement' type=.LighterASTNode origin=GET_PROPERTY + $this: TYPE_OP type=.FirLightSourceElement origin=IMPLICIT_CAST typeOperand=.FirLightSourceElement + GET_VAR ': .FirSourceElement? declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + treeStructure: CALL 'public final fun (): .FlyweightCapableTreeStructure declared in .FirLightSourceElement' type=.FlyweightCapableTreeStructure origin=GET_PROPERTY + $this: TYPE_OP type=.FirLightSourceElement origin=IMPLICIT_CAST typeOperand=.FirLightSourceElement + GET_VAR ': .FirSourceElement? declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + predicate: FUN_EXPR type=kotlin.Function1<.LighterASTNode?, kotlin.Boolean> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:.LighterASTNode?) returnType:kotlin.Boolean + VALUE_PARAMETER name:it index:0 type:.LighterASTNode? + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (it: .LighterASTNode?): kotlin.Boolean declared in .FirModifierList.Companion.getModifierList' + CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: BLOCK type=.TokenType? origin=SAFE_CALL + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:.LighterASTNode? [val] + GET_VAR 'it: .LighterASTNode? declared in .FirModifierList.Companion.getModifierList.' type=.LighterASTNode? origin=null + WHEN type=.TokenType? origin=null + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_4: .LighterASTNode? [val] declared in .FirModifierList.Companion.getModifierList.' type=.LighterASTNode? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun (): .TokenType declared in .LighterASTNode' type=.TokenType origin=GET_PROPERTY + $this: GET_VAR 'val tmp_4: .LighterASTNode? [val] declared in .FirModifierList.Companion.getModifierList.' type=.LighterASTNode? origin=null + arg1: CALL 'public final fun (): .TokenType declared in .TokenType.Companion' type=.TokenType origin=GET_PROPERTY + $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=.TokenType.Companion + WHEN type=.LighterASTNode origin=ELVIS + BRANCH + if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ + arg0: GET_VAR 'val tmp_3: .LighterASTNode? [val] declared in .FirModifierList.Companion.getModifierList' type=.LighterASTNode? origin=null + arg1: CONST Null type=kotlin.Nothing? value=null + then: RETURN type=kotlin.Nothing from='public final fun getModifierList (): .FirModifierList? declared in .FirModifierList.Companion' + CONST Null type=kotlin.Nothing? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: GET_VAR 'val tmp_3: .LighterASTNode? [val] declared in .FirModifierList.Companion.getModifierList' type=.LighterASTNode? origin=null + CONSTRUCTOR_CALL 'public constructor (modifierList: .LighterASTNode, tree: .FlyweightCapableTreeStructure) [primary] declared in .FirModifierList.FirLightModifierList' type=.FirModifierList.FirLightModifierList origin=null + modifierList: GET_VAR 'val modifierListNode: .LighterASTNode [val] declared in .FirModifierList.Companion.getModifierList' type=.LighterASTNode origin=null + tree: CALL 'public final fun (): .FlyweightCapableTreeStructure declared in .FirLightSourceElement' type=.FlyweightCapableTreeStructure origin=GET_PROPERTY + $this: TYPE_OP type=.FirLightSourceElement origin=IMPLICIT_CAST typeOperand=.FirLightSourceElement + GET_VAR ': .FirSourceElement? declared in .FirModifierList.Companion.getModifierList' type=.FirSourceElement? origin=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public final fun noWhenBranchMatchedException (): kotlin.Nothing declared in kotlin.internal.ir' type=kotlin.Nothing origin=null + FUN name:boxImpl visibility:public modality:FINAL <> ($this:.FirModifierList.Companion) returnType:kotlin.String + $this: VALUE_PARAMETER name: type:.FirModifierList.Companion + BLOCK_BODY + VAR name:sourceElement type:.FirSourceElement? [val] + CONSTRUCTOR_CALL 'public constructor (lighterASTNode: .LighterASTNode, treeStructure: .FlyweightCapableTreeStructure) [primary] declared in .FirLightSourceElement' type=.FirLightSourceElement origin=null + lighterASTNode: CONSTRUCTOR_CALL 'public constructor (_children: kotlin.collections.List<.LighterASTNode?>) [primary] declared in .LighterASTNode' type=.LighterASTNode origin=null + _children: CALL 'public final fun listOf (element: T of kotlin.collections.CollectionsKt.listOf): kotlin.collections.List declared in kotlin.collections.CollectionsKt' type=kotlin.collections.List<.LighterASTNode> origin=null + : .LighterASTNode + element: CONSTRUCTOR_CALL 'public constructor (_children: kotlin.collections.List<.LighterASTNode?>) [primary] declared in .LighterASTNode' type=.LighterASTNode origin=null + treeStructure: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .FlyweightCapableTreeStructure' type=.FlyweightCapableTreeStructure origin=null + VAR name:result type:.FirModifierList? [val] + CALL 'public final fun getModifierList (): .FirModifierList? declared in .FirModifierList.Companion' type=.FirModifierList? origin=null + $this: GET_VAR ': .FirModifierList.Companion declared in .FirModifierList.Companion.boxImpl' type=.FirModifierList.Companion origin=null + $receiver: GET_VAR 'val sourceElement: .FirSourceElement? [val] declared in .FirModifierList.Companion.boxImpl' type=.FirSourceElement? origin=null + RETURN type=kotlin.Nothing from='public final fun boxImpl (): kotlin.String declared in .FirModifierList.Companion' + WHEN type=kotlin.String origin=IF + BRANCH + if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=.FirModifierList.FirLightModifierList + GET_VAR 'val result: .FirModifierList? [val] declared in .FirModifierList.Companion.boxImpl' type=.FirModifierList? origin=null + then: CONST String type=kotlin.String value="OK" + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CONST String type=kotlin.String value="Fail" + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' + CALL 'public final fun boxImpl (): kotlin.String declared in .FirModifierList.Companion' type=kotlin.String origin=null + $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=.FirModifierList.Companion diff --git a/compiler/testData/codegen/box/smartCasts/kt44814.kt b/compiler/testData/codegen/box/smartCasts/kt44814.kt new file mode 100644 index 00000000000..efab025c5a8 --- /dev/null +++ b/compiler/testData/codegen/box/smartCasts/kt44814.kt @@ -0,0 +1,86 @@ +// ISSUE: KT-44814 +// WITH_STDLIB +// DUMP_IR +// DUMP_CFG +// RENDERER_CFG_LEVELS + +class FlyweightCapableTreeStructure + +sealed class FirSourceElement { + abstract val lighterASTNode: LighterASTNode + abstract val treeStructure: FlyweightCapableTreeStructure +} +class FirPsiSourceElement( + val psi: PsiElement, + override val lighterASTNode: LighterASTNode, + override val treeStructure: FlyweightCapableTreeStructure +) : FirSourceElement() +class FirLightSourceElement( + override val lighterASTNode: LighterASTNode, + override val treeStructure: FlyweightCapableTreeStructure +) : FirSourceElement() + +open class PsiElement +class ASTNode +class LighterASTNode(val _children: List = emptyList()) { + fun getChildren(treeStructure: FlyweightCapableTreeStructure): List = _children + + val tokenType: TokenType = TokenType.MODIFIER_LIST +} + +class TokenType { + companion object { + val MODIFIER_LIST = TokenType() + } +} + +class KtModifierKeywordToken +class KtModifierList : PsiElement() +class KtModifierListOwner : PsiElement() { + val modifierList: KtModifierList = KtModifierList() +} + +internal sealed class FirModifier(val node: Node, val token: KtModifierKeywordToken) { + class FirPsiModifier( + node: ASTNode, + token: KtModifierKeywordToken + ) : FirModifier(node, token) + + class FirLightModifier( + node: LighterASTNode, + token: KtModifierKeywordToken, + val tree: FlyweightCapableTreeStructure + ) : FirModifier(node, token) +} + +internal sealed class FirModifierList { + val modifiers: List> = emptyList() + + class FirPsiModifierList(val modifierList: KtModifierList) : FirModifierList() + + class FirLightModifierList(val modifierList: LighterASTNode, val tree: FlyweightCapableTreeStructure) : FirModifierList() + + companion object { + fun FirSourceElement?.getModifierList(): FirModifierList? { + return when (this) { + null -> null + is FirPsiSourceElement-> (psi as? KtModifierListOwner)?.modifierList?.let { FirPsiModifierList(it) } + is FirLightSourceElement -> { + val modifierListNode = lighterASTNode.getChildren(treeStructure).find { it?.tokenType == TokenType.MODIFIER_LIST } + ?: return null // error is here + FirLightModifierList(modifierListNode, treeStructure) + } + } + } + + fun boxImpl(): String { + val sourceElement: FirSourceElement? = FirLightSourceElement(LighterASTNode(listOf(LighterASTNode())), FlyweightCapableTreeStructure()) + val result = sourceElement.getModifierList() + return if (result is FirLightModifierList) "OK" else "Fail" + } + } +} + +fun box(): String { + return FirModifierList.boxImpl() +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index f5eca379772..fe567f15a8d 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -37440,6 +37440,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @Test + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @Test @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 1edc33d351b..83e4f5b8d59 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -37440,6 +37440,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @Test + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @Test @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 41c2fd07f52..4085b7eb97d 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -29916,6 +29916,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { runTest("compiler/testData/codegen/box/smartCasts/lambdaArgumentWithoutType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index c7360da197e..e1bfd4bfe53 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -25527,6 +25527,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { runTest("compiler/testData/codegen/box/smartCasts/lambdaArgumentWithoutType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 3de8d8634a4..9c0fa9c796d 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -25012,6 +25012,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { runTest("compiler/testData/codegen/box/smartCasts/lambdaArgumentWithoutType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index a1313161de9..e93dce59051 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -24972,6 +24972,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @TestMetadata("lambdaArgumentWithoutType.kt") public void testLambdaArgumentWithoutType() throws Exception { runTest("compiler/testData/codegen/box/smartCasts/lambdaArgumentWithoutType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index afd26477072..318e3c70622 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -13589,6 +13589,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/smartCasts/kt44804.kt"); } + @TestMetadata("kt44814.kt") + public void testKt44814() throws Exception { + runTest("compiler/testData/codegen/box/smartCasts/kt44814.kt"); + } + @TestMetadata("multipleSmartCast.kt") public void testMultipleSmartCast() throws Exception { runTest("compiler/testData/codegen/box/smartCasts/multipleSmartCast.kt");