SelfReference.ceylon
import ceylon.ast.core {
SelfReference,
This,
Super,
Outer,
Package
}
import ceylon.ast.redhat {
RedHatTransformer,
compileSelfReference,
compileThis,
compileSuper,
compileOuter,
compilePackage,
selfReferenceToCeylon,
thisToCeylon,
superToCeylon,
outerToCeylon,
packageToCeylon
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JSelfExpression=SelfExpression,
JThis=This,
JSuper=Super,
JOuter=Outer,
JPackage=Package
}
}
shared object \ithis satisfies ConcreteTest<This,JThis> {
shared String->This thisThis = "this"->This();
compile = compileThis;
fromCeylon = RedHatTransformer.transformThis;
toCeylon = thisToCeylon;
codes = [thisThis];
}
shared object \isuper satisfies ConcreteTest<Super,JSuper> {
shared String->Super superSuper = "super"->Super();
compile = compileSuper;
fromCeylon = RedHatTransformer.transformSuper;
toCeylon = superToCeylon;
codes = [superSuper];
}
shared object \iouter satisfies ConcreteTest<Outer,JOuter> {
shared String->Outer outerOuter = "outer"->Outer();
compile = compileOuter;
fromCeylon = RedHatTransformer.transformOuter;
toCeylon = outerToCeylon;
codes = [outerOuter];
}
shared object \ipackage satisfies ConcreteTest<Package,JPackage> {
shared String->Package packagePackage = "package"->Package();
compile = compilePackage;
fromCeylon = RedHatTransformer.transformPackage;
toCeylon = packageToCeylon;
codes = [packagePackage];
}
shared object selfReference satisfies AbstractTest<SelfReference,JSelfExpression|JOuter|JPackage> {
compile = compileSelfReference;
fromCeylon = RedHatTransformer.transformSelfReference;
toCeylon = selfReferenceToCeylon;
tests = [\ithis, \isuper, \iouter, \ipackage];
}