throw down case for empty cases supported
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.jet.j2k.ast;
|
package org.jetbrains.jet.j2k.ast;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.j2k.util.AstUtil;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -9,10 +10,10 @@ import java.util.List;
|
|||||||
* @author ignatov
|
* @author ignatov
|
||||||
*/
|
*/
|
||||||
public class CaseContainer extends Statement {
|
public class CaseContainer extends Statement {
|
||||||
private Statement myCaseStatement;
|
private List<Statement> myCaseStatement;
|
||||||
private Block myBlock;
|
private Block myBlock;
|
||||||
|
|
||||||
public CaseContainer(final Statement caseStatement, final List<Statement> statements) {
|
public CaseContainer(final List<Statement> caseStatement, final List<Statement> statements) {
|
||||||
myCaseStatement = caseStatement;
|
myCaseStatement = caseStatement;
|
||||||
List<Statement> newStatements = new LinkedList<Statement>();
|
List<Statement> newStatements = new LinkedList<Statement>();
|
||||||
for (Statement s : statements)
|
for (Statement s : statements)
|
||||||
@@ -24,6 +25,6 @@ public class CaseContainer extends Statement {
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String toKotlin() {
|
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 org.jetbrains.jet.j2k.ast.*;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -210,15 +209,20 @@ public class StatementVisitor extends ElementVisitor {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private static List<CaseContainer> listToCases(@NotNull final List<List<PsiStatement>> cases) {
|
private static List<CaseContainer> listToCases(@NotNull final List<List<PsiStatement>> cases) {
|
||||||
List<CaseContainer> result = new LinkedList<CaseContainer>();
|
List<CaseContainer> result = new LinkedList<CaseContainer>();
|
||||||
|
List<Statement> pendingLabels = new LinkedList<Statement>();
|
||||||
for (List<PsiStatement> ls : cases) {
|
for (List<PsiStatement> ls : cases) {
|
||||||
assert ls.size() > 0;
|
assert ls.size() > 0;
|
||||||
PsiStatement label = ls.get(0);
|
PsiStatement label = ls.get(0);
|
||||||
assert label instanceof PsiSwitchLabelStatement;
|
assert label instanceof PsiSwitchLabelStatement;
|
||||||
result.add(new CaseContainer(statementToStatement(label),
|
if (ls.size() > 1) {
|
||||||
ls.size() > 1 ?
|
pendingLabels.add(statementToStatement(label));
|
||||||
statementsToStatementList(ls.subList(1, ls.size()).toArray(new PsiStatement[ls.size() - 1])) :
|
result.add(new CaseContainer(pendingLabels,
|
||||||
Collections.<Statement>emptyList()
|
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;
|
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