Construction.ceylon
import ceylon.ast.core {
BaseType,
Construction,
MemberNameWithTypeArguments,
PositionalArguments,
Super,
LIdentifier
}
import ceylon.ast.redhat {
RedHatTransformer,
constructionToCeylon,
compileConstruction
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JInvocationExpression=InvocationExpression
}
}
shared object construction satisfies ConcreteTest<Construction,JInvocationExpression> {
String->Construction construct(String->MemberNameWithTypeArguments nameAndArgs, String->PositionalArguments arguments, <String->BaseType|Super>? qualifier)
=> "`` if (exists qualifier) then "``qualifier.key``." else "" ````nameAndArgs.key````arguments.key``"->Construction(nameAndArgs.item, arguments.item, qualifier?.item);
shared String->Construction pointCartesianConstruction = construct("cartesian"->MemberNameWithTypeArguments(LIdentifier("cartesian")), positionalArguments.emptyPositionalArguments, baseType.pointType);
shared String->Construction withRgbConstruction = construct("withRGB"->MemberNameWithTypeArguments(LIdentifier("withRGB")), positionalArguments.emptyPositionalArguments, baseType.pointType);
shared String->Construction superCartesianConstruction = construct("cartesian"->MemberNameWithTypeArguments(LIdentifier("cartesian")), positionalArguments.emptyPositionalArguments, "super"->Super());
shared String->Construction pointCartesianOfStringConstruction = construct("cartesian<String>"->MemberNameWithTypeArguments(LIdentifier("cartesian"), typeArguments.stringTypeArguments.item), positionalArguments.emptyPositionalArguments, baseType.pointType);
shared String->Construction withRgbOfStringConstruction = construct("withRGB<String>"->MemberNameWithTypeArguments(LIdentifier("withRGB"), typeArguments.stringTypeArguments.item), positionalArguments.emptyPositionalArguments, baseType.pointType);
shared String->Construction superCartesianOfStringConstruction = construct("cartesian<String>"->MemberNameWithTypeArguments(LIdentifier("cartesian"), typeArguments.stringTypeArguments.item), positionalArguments.emptyPositionalArguments, "super"->Super());
compile = compileConstruction;
fromCeylon = RedHatTransformer.transformConstruction;
toCeylon = constructionToCeylon;
codes = [pointCartesianConstruction, withRgbConstruction, superCartesianConstruction, pointCartesianOfStringConstruction, withRgbOfStringConstruction, superCartesianOfStringConstruction];
}