No use of WhenBuilder at all

This commit is contained in:
Valentin Kipyatkov
2015-05-06 00:36:41 +03:00
parent 4f96965310
commit 428bcbbc8a
3 changed files with 25 additions and 107 deletions
@@ -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
@@ -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
}
@@ -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 {