Nicolas Cannasse před 19 roky
rodič
revize
37358d3062
1 změnil soubory, kde provedl 4 přidání a 4 odebrání
  1. 4 4
      std/haxe/Template.hx

+ 4 - 4
std/haxe/Template.hx

@@ -77,7 +77,7 @@ class Template {
 		return buf.toString();
 		return buf.toString();
 	}
 	}
 
 
-	function resolve( v : String ) : Dynamic {
+	public function resolve( v : String ) : Dynamic {
 		if( Reflect.hasField(context,v) )
 		if( Reflect.hasField(context,v) )
 			return Reflect.field(context,v);
 			return Reflect.field(context,v);
 		for( ctx in stack )
 		for( ctx in stack )
@@ -334,7 +334,6 @@ class Template {
 			var v : Dynamic = Reflect.field(macros,m);
 			var v : Dynamic = Reflect.field(macros,m);
 			var pl = new Array<Dynamic>();
 			var pl = new Array<Dynamic>();
 			var old = buf;
 			var old = buf;
-			pl.push(resolve);
 			for( p in params ) {
 			for( p in params ) {
 				switch( p ) {
 				switch( p ) {
 				case OpVar(v): pl.push(resolve(v));
 				case OpVar(v): pl.push(resolve(v));
@@ -346,9 +345,10 @@ class Template {
 			}
 			}
 			buf = old;
 			buf = old;
 			try {
 			try {
-				buf.add(Reflect.callMethod(null,v,pl));
+				buf.add(Reflect.callMethod(macros,v,pl));
 			} catch( e : Dynamic ) {
 			} catch( e : Dynamic ) {
-				var msg = "Macro call "+m+" failed ("+Std.string(e)+")";
+				var plstr = try pl.toString() catch( e : Dynamic ) "???";
+				var msg = "Macro call "+m+"("+plstr+") failed ("+Std.string(e)+")";
 				#if neko
 				#if neko
 				neko.Lib.rethrow(msg);
 				neko.Lib.rethrow(msg);
 				#else true
 				#else true