Browse Source

minor fixes

Nicolas Cannasse 9 years ago
parent
commit
700ef40dfe
2 changed files with 22 additions and 7 deletions
  1. 5 2
      std/hl/_std/Reflect.hx
  2. 17 5
      std/hl/_std/Std.hx

+ 5 - 2
std/hl/_std/Reflect.hx

@@ -63,8 +63,11 @@ class Reflect {
 		if( ft.kind != HFun )
 		if( ft.kind != HFun )
 			throw "Invalid function " + func;
 			throw "Invalid function " + func;
 		var need = ft.getArgsCount();
 		var need = ft.getArgsCount();
-		var isClosure = hl.types.Api.getClosureValue(func) != null;
-		if( o != null && !isClosure && count == need )
+		var cval = hl.types.Api.getClosureValue(func);
+		var isClosure = cval != null;
+		if( o == null )
+			o = cval;
+		else if( !isClosure && count == need )
 			o = null;
 			o = null;
 		var nargs = o == null ? count : count + 1;
 		var nargs = o == null ? count : count + 1;
 		if( isClosure ) need++;
 		if( isClosure ) need++;

+ 17 - 5
std/hl/_std/Std.hx

@@ -85,12 +85,24 @@ class Std {
 			return (a : String) + b;
 			return (a : String) + b;
 		if( tb == hl.types.Type.get("") )
 		if( tb == hl.types.Type.get("") )
 			return a + (b : String);
 			return a + (b : String);
-		switch( (cast ta.kind : Int) | ((cast tb.kind : Int) << 8) ) {
-		case 0x0303:
-			return (a:Int) + (b : Int);
-		case x:
-			throw "Can't add "+ta+" and "+tb+" ("+StringTools.hex(x)+")";
+		switch(ta.kind) {
+		case HI8, HI16, HI32:
+			var a : Int = a;
+			switch( tb.kind ) {
+			case HI8, HI16, HI32: return a + (b:Int);
+			case HF32, HF64: return a + (b:Float);
+			default:
+			}
+		case HF32, HF64:
+			var a : Float = a;
+			switch( tb.kind ) {
+			case HI8, HI16, HI32: return a + (b:Int);
+			case HF32, HF64: return a + (b:Float);
+			default:
+			}
+		default:
 		}
 		}
+		throw "Can't add "+a+"("+ta+") and "+b+"("+tb+")";
 		return null;
 		return null;
 	}
 	}