From 428bcbbc8a1ed183d7750e229a7db0a5e0b3a41b Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 6 May 2015 00:36:41 +0300 Subject: [PATCH] No use of WhenBuilder at all --- .../org/jetbrains/kotlin/psi/JetPsiFactory.kt | 94 ------------------- .../jetbrains/kotlin/psi/createByPattern.kt | 6 +- .../branchedTransformationUtils.kt | 32 ++++--- 3 files changed, 25 insertions(+), 107 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt index 550fb9950a7..3e1eb0bb681 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt @@ -412,100 +412,6 @@ public class JetPsiFactory(private val project: Project) { } } - public inner class WhenBuilder(subjectText: String?) { - private val sb = StringBuilder("when ") - private var frozen = false - private var inCondition = false - - public fun condition(text: String): WhenBuilder { - assert(!frozen) - - if (!inCondition) { - inCondition = true - } - else { - sb.append(", ") - } - sb.append(text) - - return this - } - - public fun condition(expression: JetExpression?): WhenBuilder { - return condition(JetPsiUtil.getText(expression)) - } - - public fun pattern(typeReferenceText: String, negated: Boolean): WhenBuilder { - return condition((if (negated) "!is" else "is") + " " + typeReferenceText) - } - - public fun pattern(typeReference: JetTypeReference?, negated: Boolean): WhenBuilder { - return pattern(JetPsiUtil.getText(typeReference), negated) - } - - public fun range(argumentText: String, negated: Boolean): WhenBuilder { - return condition((if (negated) "!in" else "in") + " " + argumentText) - } - - public fun range(argument: JetExpression?, negated: Boolean): WhenBuilder { - return range(JetPsiUtil.getText(argument), negated) - } - - public fun branchExpression(expressionText: String): WhenBuilder { - assert(!frozen) - assert(inCondition) - - inCondition = false - sb.append(" -> ").append(expressionText).append("\n") - - return this - } - - public fun branchExpression(expression: JetExpression?): WhenBuilder { - return branchExpression(JetPsiUtil.getText(expression)) - } - - public fun entry(entryText: String): WhenBuilder { - assert(!frozen) - assert(!inCondition) - - sb.append(entryText).append("\n") - - return this - } - - public fun entry(whenEntry: JetWhenEntry?): WhenBuilder { - return entry(JetPsiUtil.getText(whenEntry)) - } - - public fun elseEntry(text: String): WhenBuilder { - return entry("else -> $text") - } - - public fun elseEntry(expression: JetExpression?): WhenBuilder { - return elseEntry(JetPsiUtil.getText(expression)) - } - - public fun toExpression(): JetWhenExpression { - if (!frozen) { - sb.append("}") - frozen = true - } - return createExpression(sb.toString()) as JetWhenExpression - } - - init { - if (subjectText != null) { - sb.append("(").append(subjectText).append(") ") - } - sb.append("{\n") - } - } - - public fun WhenBuilder(subject: JetExpression?): WhenBuilder { - return WhenBuilder(subject?.getText()) - } - public class CallableBuilder(private val target: Target) { public enum class Target { FUNCTION diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/createByPattern.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/createByPattern.kt index 42eef2b80f2..ff4d26dc177 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/createByPattern.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/createByPattern.kt @@ -199,8 +199,10 @@ public class ExpressionBuilder { } public fun appendExpression(expression: JetExpression?): ExpressionBuilder { - patternBuilder.append("$" + arguments.size()) - arguments.add(expression) + if (expression != null) { + patternBuilder.append("$" + arguments.size()) + arguments.add(expression) + } return this } diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt index 9adf800e38c..043ad0a822f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt @@ -131,22 +131,32 @@ public fun JetWhenExpression.flatten(): JetWhenExpression { assert(elseBranch is JetWhenExpression, TRANSFORM_WITHOUT_CHECK) - val nestedWhenExpression = (elseBranch as JetWhenExpression) + val nestedWhenExpression = elseBranch as JetWhenExpression val outerEntries = getEntries() val innerEntries = nestedWhenExpression.getEntries() - val builder = JetPsiFactory(this).WhenBuilder(subjectExpression) - for (entry in outerEntries) { - if (entry.isElse()) - continue - builder.entry(entry) - } - for (entry in innerEntries) { - builder.entry(entry) - } + val whenExpression = JetPsiFactory(this).buildExpression { + appendFixedText("when") + if (subjectExpression != null) { + appendFixedText("(").appendExpression(subjectExpression).appendFixedText(")") + } + appendFixedText("{\n") - return replaced(builder.toExpression()) + for (entry in outerEntries) { + if (entry.isElse()) continue + appendNonFormattedText(entry.getText()) + appendFixedText("\n") + } + for (entry in innerEntries) { + appendNonFormattedText(entry.getText()) + appendFixedText("\n") + } + + appendFixedText("}") + } as JetWhenExpression + + return replaced(whenExpression) } public fun JetWhenExpression.introduceSubject(): JetWhenExpression {