FunctionDec.ceylon
import ceylon.ast.core {
DecQualifier,
FunctionDec,
LIdentifier,
UIdentifier
}
import ceylon.ast.redhat {
RedHatTransformer,
functionDecToCeylon,
compileFunctionDec
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JFunctionLiteral=FunctionLiteral
}
}
shared object functionDec satisfies ConcreteTest<FunctionDec,JFunctionLiteral> {
String->FunctionDec construct(String->LIdentifier name, String->DecQualifier qualifier = ""->DecQualifier()) {
String qualification;
if (qualifier.item.children nonempty) {
qualification = qualifier.key + ".";
} else {
qualification = "";
}
return "` function ``qualification````name.key`` `"->FunctionDec(name.item, qualifier.item);
}
shared String->FunctionDec concatenateFunctionDec = construct(identifier.concatenateLIdentifier);
shared String->FunctionDec iterableMapFunctionDec = construct(identifier.mapLIdentifier, "Iterable"->DecQualifier([UIdentifier("Iterable")]));
compile = compileFunctionDec;
fromCeylon = RedHatTransformer.transformFunctionDec;
toCeylon = functionDecToCeylon;
codes = [concatenateFunctionDec, iterableMapFunctionDec];
}