SatisfiedTypes.ceylon

import ceylon.ast.core {
    PrimaryType,
    SatisfiedTypes
}
import ceylon.ast.redhat {
    RedHatTransformer,
    satisfiedTypesToCeylon,
    compileSatisfiedTypes
}
import com.redhat.ceylon.compiler.typechecker.tree {
    Tree {
        JSatisfiedTypes=SatisfiedTypes
    }
}

shared object satisfiedTypes satisfies ConcreteTest<SatisfiedTypes,JSatisfiedTypes> {
    
    String->SatisfiedTypes construct(<String->PrimaryType>+ satisfiedTypes)
            => "satisfies ``"&".join(satisfiedTypes*.key)``"->SatisfiedTypes(satisfiedTypes*.item);
    
    shared String->SatisfiedTypes satisfiesStringStarAndPrintableSatisfiedTypes = construct(iterableType.stringStarIterableType, baseType.printableType);
    
    compile = compileSatisfiedTypes;
    fromCeylon = RedHatTransformer.transformSatisfiedTypes;
    toCeylon = satisfiedTypesToCeylon;
    codes = [satisfiesStringStarAndPrintableSatisfiedTypes];
}