ValueSpecification.ceylon
import ceylon.ast.core {
LIdentifier,
Specifier,
This,
ValueSpecification
}
import ceylon.ast.redhat {
RedHatTransformer,
valueSpecificationToCeylon,
compileValueSpecification
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JSpecifierStatement=SpecifierStatement
}
}
shared object valueSpecification satisfies ConcreteTest<ValueSpecification,JSpecifierStatement> {
String->ValueSpecification construct(String->LIdentifier name, String->Specifier specifier, <String->This>? qualifier = null)
=> "``(if (exists qualifier) then "``qualifier.key``." else "")````name.key````specifier.key``;"->ValueSpecification(name.item, specifier.item, qualifier?.item);
// helper
String->This thisQualifier = "this"->This();
shared String->ValueSpecification sizeSpecify0 = construct("size"->LIdentifier("size"), specifier._0Specifier);
shared String->ValueSpecification thisSizeSpecify0 = construct("size"->LIdentifier("size"), specifier._0Specifier, thisQualifier);
// not tested directly, but used in other tests
shared String->ValueSpecification thisXSpecifyX = construct(identifier.xLIdentifier, specifier.xSpecifier, thisQualifier);
shared String->ValueSpecification thisYSpecifyY = construct(identifier.yLIdentifier, specifier.ySpecifier, thisQualifier);
shared String->ValueSpecification thisRSpecifySqrt = construct(identifier.rLIdentifier, specifier.sqrtSpecifier, thisQualifier);
shared String->ValueSpecification thisPhiSpecifyAtan2 = construct(identifier.phiLIdentifier, specifier.atan2Specifier, thisQualifier);
shared String->ValueSpecification thisXSpecifyProduct = construct(identifier.xLIdentifier, specifier.rTimesCosSpecifier, thisQualifier);
shared String->ValueSpecification thisYSpecifyProduct = construct(identifier.yLIdentifier, specifier.rTimesSinSpecifier, thisQualifier);
shared String->ValueSpecification thisRSpecifyR = construct(identifier.rLIdentifier, specifier.rSpecifier, thisQualifier);
shared String->ValueSpecification thisPhiSpecifyPhi = construct(identifier.phiLIdentifier, specifier.phiSpecifier, thisQualifier);
shared String->ValueSpecification xSpecify0 = construct(identifier.xLIdentifier, specifier._0Specifier);
shared String->ValueSpecification ySpecify0 = construct(identifier.yLIdentifier, specifier._0Specifier);
shared String->ValueSpecification rSpecify0 = construct(identifier.rLIdentifier, specifier._0Specifier);
shared String->ValueSpecification phiSpecify0 = construct(identifier.phiLIdentifier, specifier._0Specifier);
compile = compileValueSpecification;
fromCeylon = RedHatTransformer.transformValueSpecification;
toCeylon = valueSpecificationToCeylon;
codes = [sizeSpecify0, thisSizeSpecify0];
}