From 5236858c20b8e53e346aa8d02033e684ac48b12f Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 14 Nov 2018 14:33:23 +0300 Subject: [PATCH] New J2K: Add JKThrowStatement and JKContinueStatement to SwitchStatementConversion's falls fallsThrough() --- .../conversions/SwitchStatementConversion.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/SwitchStatementConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/SwitchStatementConversion.kt index 464a4338545..b3f98a503df 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/SwitchStatementConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/SwitchStatementConversion.kt @@ -89,16 +89,22 @@ class SwitchStatementConversion(private val context: ConversionContext) : Recurs all { it.fallsThrough() } private fun JKStatement.fallsThrough(): Boolean = - when (this) { - //TODO add support of this when will be added - // is JKThrowStatement || is JKContinueStatement -> false - is JKBreakStatement, is JKReturnStatement -> false - is JKBlockStatement -> block.statements.fallsThrough() - is JKIfStatement, is JKJavaSwitchStatement, is JKKtWhenStatement -> + when { + this.isThrowStatement() || + this is JKBreakStatement || + this is JKReturnStatement || + this is JKContinueStatement -> false + this is JKBlockStatement -> block.statements.fallsThrough() + this is JKIfStatement || + this is JKJavaSwitchStatement || + this is JKKtWhenStatement -> this.psi!!.canCompleteNormally() else -> true } + private fun JKStatement.isThrowStatement(): Boolean = + (this as? JKExpressionStatement)?.expression is JKKtThrowExpression + private fun PsiElement.canCompleteNormally(): Boolean { val controlFlow = ControlFlowFactory.getInstance(project).getControlFlow(this, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance())