Reformat: BranchedFoldingUtils

This commit is contained in:
Mikhail Glukhikh
2018-04-28 18:42:20 +03:00
parent 89981ecbbb
commit 2854e6b7a1
@@ -61,18 +61,15 @@ object BranchedFoldingUtils {
fun collectAssignmentsAndCheck(e: KtExpression?): Boolean = when (e) { fun collectAssignmentsAndCheck(e: KtExpression?): Boolean = when (e) {
is KtWhenExpression -> { is KtWhenExpression -> {
val entries = e.entries val entries = e.entries
!e.hasMissingCases() && !e.hasMissingCases() && entries.isNotEmpty() && entries.all { entry ->
entries.isNotEmpty() &&
entries.all { entry ->
val assignment = getFoldableBranchedAssignment(entry.expression)?.run { assignments.add(this) } val assignment = getFoldableBranchedAssignment(entry.expression)?.run { assignments.add(this) }
assignment != null || collectAssignmentsAndCheck(entry.expression?.lastBlockStatementOrThis()) assignment != null || collectAssignmentsAndCheck(entry.expression?.lastBlockStatementOrThis())
} }
} }
is KtIfExpression -> { is KtIfExpression -> {
val branches = e.branches val branches = e.branches
branches.size > 1 && val elseBranch = branches.lastOrNull()?.getStrictParentOfType<KtIfExpression>()?.`else`
(branches.lastOrNull()?.getStrictParentOfType<KtIfExpression>()?.`else` != null) && branches.size > 1 && elseBranch != null && branches.all { branch ->
branches.all { branch ->
val assignment = getFoldableBranchedAssignment(branch)?.run { assignments.add(this) } val assignment = getFoldableBranchedAssignment(branch)?.run { assignments.add(this) }
assignment != null || collectAssignmentsAndCheck(branch?.lastBlockStatementOrThis()) assignment != null || collectAssignmentsAndCheck(branch?.lastBlockStatementOrThis())
} }
@@ -105,7 +102,8 @@ object BranchedFoldingUtils {
else else
false false
} }
)) { )
) {
return -1 return -1
} }
return assignments.size return assignments.size
@@ -117,8 +115,7 @@ object BranchedFoldingUtils {
val foldableBranchedReturn = getFoldableBranchedReturn(branch) val foldableBranchedReturn = getFoldableBranchedReturn(branch)
if (foldableBranchedReturn != null) { if (foldableBranchedReturn != null) {
prevList.add(foldableBranchedReturn) prevList.add(foldableBranchedReturn)
} } else {
else {
val currReturns = getFoldableReturns(branch?.lastBlockStatementOrThis()) ?: return@fold null val currReturns = getFoldableReturns(branch?.lastBlockStatementOrThis()) ?: return@fold null
prevList += currReturns prevList += currReturns
} }
@@ -175,6 +172,7 @@ object BranchedFoldingUtils {
replace(rhs) replace(rhs)
} }
} }
fun lift(e: KtExpression?) { fun lift(e: KtExpression?) {
when (e) { when (e) {
is KtWhenExpression -> e.entries.forEach { entry -> is KtWhenExpression -> e.entries.forEach { entry ->
@@ -196,19 +194,18 @@ object BranchedFoldingUtils {
fun KtReturnExpression.replaceWithReturned() { fun KtReturnExpression.replaceWithReturned() {
replace(returnedExpression!!) replace(returnedExpression!!)
} }
fun lift(e: KtExpression?) { fun lift(e: KtExpression?) {
when (e) { when (e) {
is KtWhenExpression -> e.entries.forEach { entry -> is KtWhenExpression -> e.entries.forEach { entry ->
getFoldableBranchedReturn(entry.expression)?.replaceWithReturned() val entryExpr = entry.expression
?: lift(entry.expression?.lastBlockStatementOrThis()) getFoldableBranchedReturn(entryExpr)?.replaceWithReturned() ?: lift(entryExpr?.lastBlockStatementOrThis())
} }
is KtIfExpression -> e.branches.forEach { branch -> is KtIfExpression -> e.branches.forEach { branch ->
getFoldableBranchedReturn(branch)?.replaceWithReturned() ?: getFoldableBranchedReturn(branch)?.replaceWithReturned() ?: lift(branch?.lastBlockStatementOrThis())
lift(branch?.lastBlockStatementOrThis())
} }
is KtTryExpression -> e.tryBlockAndCatchBodies().forEach { is KtTryExpression -> e.tryBlockAndCatchBodies().forEach {
getFoldableBranchedReturn(it)?.replaceWithReturned() ?: getFoldableBranchedReturn(it)?.replaceWithReturned() ?: lift(it?.lastBlockStatementOrThis())
lift(it?.lastBlockStatementOrThis())
} }
} }
} }