fossil functions support type parameters
This commit is contained in:
@@ -598,6 +598,22 @@ class Kiss {
|
|||||||
return fossilCode;
|
return fossilCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function typeParamDeclToString(param:TypeParamDecl) {
|
||||||
|
var str = param.name;
|
||||||
|
|
||||||
|
if (param.params != null && param.params.length > 0) {
|
||||||
|
str += "<";
|
||||||
|
str += [for (innerParam in param.params) typeParamDeclToString(innerParam)].join(",");
|
||||||
|
str += ">";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param.defaultType != null || (param.constraints != null && param.constraints.length > 0)) {
|
||||||
|
str += "{type paramater default types and constraints are not supported for fossilization}";
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
public static function toStringTabbed(e:Expr) {
|
public static function toStringTabbed(e:Expr) {
|
||||||
var str = e.toString();
|
var str = e.toString();
|
||||||
return str.replace("\n", "\n\t");
|
return str.replace("\n", "\n\t");
|
||||||
@@ -697,7 +713,17 @@ class Kiss {
|
|||||||
}
|
}
|
||||||
fossilCode += ';';
|
fossilCode += ';';
|
||||||
case FFun(f):
|
case FFun(f):
|
||||||
fossilCode += "function " + field.name + "(";
|
fossilCode += "function " + field.name;
|
||||||
|
if (f.params != null && f.params.length > 0) {
|
||||||
|
fossilCode += "<";
|
||||||
|
fossilCode += [
|
||||||
|
for (param in f.params) {
|
||||||
|
typeParamDeclToString(param);
|
||||||
|
}
|
||||||
|
].join(",");
|
||||||
|
fossilCode += ">";
|
||||||
|
}
|
||||||
|
fossilCode += "(";
|
||||||
var firstArg = true;
|
var firstArg = true;
|
||||||
for (arg in f.args) {
|
for (arg in f.args) {
|
||||||
if (!firstArg) {
|
if (!firstArg) {
|
||||||
|
|||||||
Reference in New Issue
Block a user