Work around macro context cache issue.

This commit is contained in:
back2dos
2014-06-15 07:07:25 +02:00
parent 613ebff7a0
commit 2acb539b00

View File

@@ -3,6 +3,7 @@ package tink;
import haxe.macro.Expr.TypeDefinition; import haxe.macro.Expr.TypeDefinition;
using tink.CoreApi; using tink.CoreApi;
using tink.macro.Positions;
typedef Positions = tink.macro.Positions; typedef Positions = tink.macro.Positions;
typedef ExprTools = haxe.macro.ExprTools; typedef ExprTools = haxe.macro.ExprTools;
@@ -41,7 +42,13 @@ class MacroApi {
static function get_typeNotFound() { static function get_typeNotFound() {
if (typeNotFound == null) { if (typeNotFound == null) {
var trigger = Signal.trigger(); var trigger = Signal.trigger();
haxe.macro.Context.onMacroContextReused(function () return false);
var listening = false;
function register() {
if (listening) return;
listening = true;
haxe.macro.Context.onTypeNotFound(function (name:String) { haxe.macro.Context.onTypeNotFound(function (name:String) {
@:privateAccess Positions.errorFunc = @:privateAccess Positions.abortTypeBuild; @:privateAccess Positions.errorFunc = @:privateAccess Positions.abortTypeBuild;
@@ -66,8 +73,20 @@ class MacroApi {
default: null; default: null;
} }
}); });
}
typeNotFound = trigger.asSignal(); register();
haxe.macro.Context.onMacroContextReused(function () {
listening = false;
return true;
});
var ret = trigger.asSignal();
typeNotFound = new Signal(function (cb) {
register();
return ret.handle(cb);
});
} }
return typeNotFound; return typeNotFound;
} }