Files
tink_macro/src/tink/macro/Functions.hx
Juraj Kirchheim c0b562af31 Fix indenting.
2016-04-14 13:54:26 +02:00

34 lines
893 B
Haxe

package tink.macro;
import haxe.macro.Expr;
using tink.macro.Exprs;
class Functions {
static public inline function asExpr(f:Function, ?name, ?pos)
return EFunction(name, f).at(pos);
static public inline function toArg(name:String, ?t, ?opt = false, ?value = null):FunctionArg {
return {
name: name,
opt: opt,
type: t,
value: value
};
}
static public inline function func(e:Expr, ?args:Array<FunctionArg>, ?ret:ComplexType, ?params, ?makeReturn = true):Function {
return {
args: args == null ? [] : args,
ret: ret,
params: params == null ? [] : params,
expr: if (makeReturn) EReturn(e).at(e.pos) else e
}
}
static public function getArgIdents(f:Function):Array<Expr> {
var ret = [];
for (arg in f.args)
ret.push(arg.name.resolve());
return ret;
}
}