ValueConstructorDefinition.ceylon

import ceylon.ast.core {
    Annotations,
    Block,
    ExtendedType,
    LIdentifier,
    ValueConstructorDefinition
}
import ceylon.ast.redhat {
    RedHatTransformer,
    valueConstructorDefinitionToCeylon,
    compileValueConstructorDefinition
}
import com.redhat.ceylon.compiler.typechecker.tree {
    Tree {
        JEnumerated=Enumerated
    }
}

shared object valueConstructorDefinition satisfies ConcreteTest<ValueConstructorDefinition,JEnumerated> {
    
    String->ValueConstructorDefinition construct(String->LIdentifier name, String->Block block, <String->ExtendedType>? extendedType = null, String->Annotations annotations = package.annotations.emptyAnnotations)
            => "``annotations.key`` new ``name.key`` `` extendedType?.key else "" `` ``block.key``"->ValueConstructorDefinition(name.item, block.item, extendedType?.item, annotations.item);
    
    shared String->ValueConstructorDefinition originValueConstructorDefinition = construct(identifier.originLIdentifier, block.originValueConstructorBlock, null, annotations.sharedAnnotations);
    
    compile = compileValueConstructorDefinition;
    fromCeylon = RedHatTransformer.transformValueConstructorDefinition;
    toCeylon = valueConstructorDefinitionToCeylon;
    codes = [originValueConstructorDefinition];
}