Resource.ceylon
import ceylon.ast.core {
Expression,
Invocation,
LIdentifier,
Resource,
SpecifiedVariable,
Specifier
}
import ceylon.ast.redhat {
RedHatTransformer,
resourceToCeylon,
compileResource
}
import com.redhat.ceylon.compiler.typechecker.tree {
Tree {
JResource=Resource
}
}
import ceylon.ast.create {
qualifiedExpression
}
shared object resource satisfies ConcreteTest<Resource,JResource> {
String->Resource construct(String->Expression|SpecifiedVariable resource)
=> "``resource.key``"->Resource(resource.item);
shared String->Resource lockResource = construct(baseExpression.lockExpression);
shared String->Resource writerResource = construct("writer = file.Writer()"->SpecifiedVariable {
name = LIdentifier("writer");
specifier = Specifier(Invocation(qualifiedExpression("file", "Writer")));
});
compile = compileResource;
fromCeylon = RedHatTransformer.transformResource;
toCeylon = resourceToCeylon;
codes = [lockResource, writerResource];
}