Este documento describe el lenguaje de programación Ceylon y su compilador hacia JavaScript (Ceylon-JS). Ceylon es un lenguaje con tipado estático que puede compilar a Java o JavaScript. El compilador Ceylon-JS genera código JavaScript a partir del árbol sintáctico abstracto de Ceylon mediante varias fases como la asignación de tipos y la generación de código para el backend de JavaScript. El código JavaScript generado emula características de Ceylon como clases, tipos genéricos e inmutabilidad.
36. Invocación por nombre
value x = Ejemplo {
dos = 5;
uno = "uno";
};
var $5=($6=(5),$7="uno",Ejemplo($7,$6));
var $6,$7;
37. Invocación con spread
value t=["uno",2];
value x=Ejemplo(*t);
var $5=m$1.tpl$(["uno",2],
m$1.mtt$([{t:m$1.$_String},{t:m$1.Integer}]));
var $6=Ejemplo($5.$_get(0), $5.$_get(1));
38. Referencia a Método
shared class Ejemplo(uno, dos) {
shared String uno;
shared variable Integer dos;
shared String algo<Algo>(Algo x)
given Algo satisfies Object {
value z = "``uno`` y ``x``";
return z.uppercased;
}
shared Ejemplo clone() =>
Ejemplo(uno, dos);
}
39. Referencia a Método
value o = Ejemplo("a",2);
value r1 = o.algo<Integer>;
value r2 = Ejemplo.algo<String>;
r1(1);
r2(o)("otra cosa");
40. Referencia a Método
value o = Ejemplo("a",2);
value r = Ejemplo.algo<String>;
r(o)("otra cosa");
var $5=Ejemplo("a",2);
var $6=m$1.$JsCallable(function(x){
return m$1.JsCallable(x,x.algo,
{Algo$algo:{t:m$1.$_String}});
},[{nm:'p2',mt:'prm',$t:{t:Ejemplo}}],
{Return$Callable:{t:m$1.Callable,a:{Return$Callable:{t:m$1.$_String},Arguments
$Callable:m$1.mtt$([{t:m$1.$_String}])}},Arguments$Callable:m$1.mtt$
([{t:Ejemplo}])});
$6($5)("otra cosa");