[FIR] Properly support smartcasts on stable when subjects in when conditions
^KT-49860 Fixed
This commit is contained in:
committed by
teamcityserver
parent
20425fb458
commit
330574cab6
@@ -794,6 +794,12 @@ class ElvisExitNode(owner: ControlFlowGraph, override val fir: FirElvisExpressio
|
||||
}
|
||||
}
|
||||
|
||||
class WhenSubjectExpressionExitNode(owner: ControlFlowGraph, override val fir: FirWhenSubjectExpression, level: Int, id: Int) : CFGNode<FirWhenSubjectExpression>(owner, level, id) {
|
||||
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
||||
return visitor.visitWhenSubjectExpressionExitNode(this, data)
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------- Other -----------------------------------
|
||||
|
||||
@OptIn(CfgInternals::class)
|
||||
|
||||
@@ -99,6 +99,8 @@ fun CFGNode<*>.render(): String =
|
||||
is EnterSafeCallNode -> "Enter safe call"
|
||||
is ExitSafeCallNode -> "Exit safe call"
|
||||
|
||||
is WhenSubjectExpressionExitNode -> "Exit ${'$'}subj"
|
||||
|
||||
is PostponedLambdaEnterNode -> "Postponed enter to lambda"
|
||||
is PostponedLambdaExitNode -> "Postponed exit from lambda"
|
||||
|
||||
|
||||
+4
@@ -347,6 +347,10 @@ abstract class ControlFlowGraphVisitor<out R, in D> {
|
||||
return visitNode(node, data)
|
||||
}
|
||||
|
||||
open fun visitWhenSubjectExpressionExitNode(node: WhenSubjectExpressionExitNode, data: D): R {
|
||||
return visitNode(node, data)
|
||||
}
|
||||
|
||||
// ----------------------------------- Elvis -----------------------------------
|
||||
|
||||
open fun visitElvisLhsExitNode(node: ElvisLhsExitNode, data: D): R {
|
||||
|
||||
Reference in New Issue
Block a user