throw down case for empty cases supported
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.jet.j2k.ast;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.util.AstUtil;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -9,10 +10,10 @@ import java.util.List;
|
||||
* @author ignatov
|
||||
*/
|
||||
public class CaseContainer extends Statement {
|
||||
private Statement myCaseStatement;
|
||||
private List<Statement> myCaseStatement;
|
||||
private Block myBlock;
|
||||
|
||||
public CaseContainer(final Statement caseStatement, final List<Statement> statements) {
|
||||
public CaseContainer(final List<Statement> caseStatement, final List<Statement> statements) {
|
||||
myCaseStatement = caseStatement;
|
||||
List<Statement> newStatements = new LinkedList<Statement>();
|
||||
for (Statement s : statements)
|
||||
@@ -24,6 +25,6 @@ public class CaseContainer extends Statement {
|
||||
@NotNull
|
||||
@Override
|
||||
public String toKotlin() {
|
||||
return myCaseStatement.toKotlin() + SPACE + "=>" + SPACE + myBlock.toKotlin();
|
||||
return AstUtil.joinNodes(myCaseStatement, COMMA_WITH_SPACE) + SPACE + "=>" + SPACE + myBlock.toKotlin();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.j2k.ast.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -210,15 +209,20 @@ public class StatementVisitor extends ElementVisitor {
|
||||
@NotNull
|
||||
private static List<CaseContainer> listToCases(@NotNull final List<List<PsiStatement>> cases) {
|
||||
List<CaseContainer> result = new LinkedList<CaseContainer>();
|
||||
List<Statement> pendingLabels = new LinkedList<Statement>();
|
||||
for (List<PsiStatement> ls : cases) {
|
||||
assert ls.size() > 0;
|
||||
PsiStatement label = ls.get(0);
|
||||
assert label instanceof PsiSwitchLabelStatement;
|
||||
result.add(new CaseContainer(statementToStatement(label),
|
||||
ls.size() > 1 ?
|
||||
statementsToStatementList(ls.subList(1, ls.size()).toArray(new PsiStatement[ls.size() - 1])) :
|
||||
Collections.<Statement>emptyList()
|
||||
));
|
||||
if (ls.size() > 1) {
|
||||
pendingLabels.add(statementToStatement(label));
|
||||
result.add(new CaseContainer(pendingLabels,
|
||||
statementsToStatementList(ls.subList(1, ls.size()).toArray(new PsiStatement[ls.size() - 1]))
|
||||
));
|
||||
pendingLabels = new LinkedList<Statement>();
|
||||
}
|
||||
else // ls.size() == 1
|
||||
pendingLabels.add(statementToStatement(label));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package switch_demo;
|
||||
|
||||
public class SwitchDemo {
|
||||
public static void main(String[] args) {
|
||||
int month = 8;
|
||||
String monthString;
|
||||
switch (month) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12: monthString = "December"; break;
|
||||
default: monthString = "Invalid month"; break;
|
||||
}
|
||||
System.out.println(monthString);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace switch_demo
|
||||
public open class SwitchDemo() {
|
||||
class object {
|
||||
open public fun main(args : Array<String?>?) : Unit {
|
||||
var month : Int = 8
|
||||
var monthString : String?
|
||||
when (month) {
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 => {
|
||||
monthString = "December"
|
||||
}
|
||||
else => {
|
||||
monthString = "Invalid month"
|
||||
}
|
||||
}
|
||||
System.out?.println(monthString)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user