MatchCase.ceylon
import ceylon.ast.core {
BaseExpression,
CharacterLiteral,
IntegerLiteral,
MatchCase,
NegationOperation,
QualifiedExpression,
StringLiteral
}
import ceylon.ast.redhat {
RedHatTransformer,
matchCaseToCeylon,
compileMatchCase
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JMatchCase=MatchCase
}
}
shared object matchCase satisfies ConcreteTest<MatchCase,JMatchCase> {
String->MatchCase construct(<String->IntegerLiteral|CharacterLiteral|StringLiteral|NegationOperation|BaseExpression|QualifiedExpression>+ expressions)
=> "``",".join(expressions*.key)``"->MatchCase(expressions*.item);
shared String->MatchCase matchZeroOrOneCase = construct(integerLiteral._0IntegerLiteral, integerLiteral.oneIntegerLiteral);
shared String->MatchCase matchNullCase = construct(baseExpression.nullExpression);
shared String->MatchCase matchMinusOneCase = construct(negationOperation.minusOneExpression);
shared String->MatchCase packageNullCase = construct(qualifiedExpression.packageNullExpression);
compile = compileMatchCase;
fromCeylon = RedHatTransformer.transformMatchCase;
toCeylon = matchCaseToCeylon;
codes = [matchZeroOrOneCase, matchNullCase, matchMinusOneCase, packageNullCase];
}