Add wrapper for onTypeNotFound to allow error reporting.

This commit is contained in:
back2dos
2014-05-16 22:35:51 +02:00
parent 56325b37d9
commit 3cc5e00078
2 changed files with 37 additions and 2 deletions

View File

@@ -29,4 +29,27 @@ class MacroApi {
static public function pos()
return haxe.macro.Context.currentPos();
static public function onTypeNotFound(f:String->haxe.macro.Expr.TypeDefinition)
haxe.macro.Context.onTypeNotFound(function (name:String) {
@:privateAccess Positions.errorFunc = @:privateAccess Positions.abortTypeBuild;
var ret =
try f(name)
catch (abort:tink.macro.Positions.AbortBuild) {
var cl = macro class {
static var __error = ${Positions.errorExpr(abort.pos, abort.message)};
}
var path = name.split('.');
cl.name = path.pop();
cl.pack = path;
cl.pos = abort.pos;
cl;
}
@:privateAccess Positions.errorFunc = @:privateAccess Positions.contextError;
return ret;
});
}