FunctionArgument.ceylon
import ceylon.ast.core {
Block,
DynamicModifier,
FunctionArgument,
FunctionModifier,
LazySpecifier,
LIdentifier,
Parameters,
Type,
VoidModifier
}
import ceylon.ast.redhat {
RedHatTransformer,
functionArgumentToCeylon,
compileFunctionArgument
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JMethodArgument=MethodArgument
}
}
shared object functionArgument satisfies ConcreteTest<FunctionArgument,JMethodArgument> {
String->FunctionArgument construct(String->LIdentifier name, String->Type|VoidModifier|FunctionModifier|DynamicModifier type, [<String->Parameters>+] parameterLists, String->Block|LazySpecifier definition)
=> "``type.key`` ``name.key`` ``"".join(parameterLists*.key)`` ``definition.key``"->FunctionArgument(name.item, type.item, parameterLists*.item, definition.item);
shared String->FunctionArgument mapFunctionArgument = construct(identifier.mapLIdentifier, functionModifier.functionModifier, [parameters.charactersParameters, parameters.emptyParameters], lazySpecifier.assignLazySpecifier);
shared String->FunctionArgument eFunctionArgument = construct(identifier.eLIdentifier, voidModifier.voidModifier, [parameters.notEmptyParameters], block.printPersonNameBlock);
shared String->FunctionArgument charactersFunctionArgument = construct(identifier.charactersLIdentifier, baseType.stringType, [parameters.emptyParameters], block.emptyBlock);
compile = compileFunctionArgument;
fromCeylon = RedHatTransformer.transformFunctionArgument;
toCeylon = functionArgumentToCeylon;
codes = [mapFunctionArgument, eFunctionArgument, charactersFunctionArgument];
}