Raw FIR: swap branches in when for elvis and bang-bang

This commit is contained in:
Mikhail Glukhikh
2019-03-29 14:10:34 +03:00
parent f77ba2dd3e
commit 395651a21e
2 changed files with 9 additions and 12 deletions
@@ -188,18 +188,15 @@ internal fun FirExpression.generateNotNullOrOther(
).apply {
branches += FirWhenBranchImpl(
session, psi,
FirOperatorCallImpl(session, psi, FirOperation.NOT_EQ).apply {
FirOperatorCallImpl(session, psi, FirOperation.EQ).apply {
arguments += subjectExpression
arguments += FirConstExpressionImpl(session, psi, IrConstKind.Null, null)
},
FirSingleExpressionBlock(
session,
generateAccessExpression(session, psi, subjectName)
)
FirSingleExpressionBlock(session, other)
)
branches += FirWhenBranchImpl(
session, other.psi, FirElseIfTrueCondition(session, psi),
FirSingleExpressionBlock(session, other)
FirSingleExpressionBlock(session, generateAccessExpression(session, psi, subjectName))
)
}
}
@@ -1,22 +1,22 @@
FILE: nullability.kt
public? final? fun orFourtyTwo(arg: Int?): <implicit> {
^orFourtyTwo when (lval <elvis>: <implicit> = arg#) {
!=($subj$, Null(null)) -> {
<elvis>#
==($subj$, Null(null)) -> {
Int(42)
}
else -> {
Int(42)
<elvis>#
}
}
}
public? final? fun bang(arg: Int?): <implicit> {
^bang when (lval <bangbang>: <implicit> = arg#) {
!=($subj$, Null(null)) -> {
<bangbang>#
==($subj$, Null(null)) -> {
throw KotlinNullPointerException#()
}
else -> {
throw KotlinNullPointerException#()
<bangbang>#
}
}