浏览代码

reverted Null<T> restrictions : we unify whole-function when making a call, leading to unwanted errors

Nicolas Cannasse 13 年之前
父节点
当前提交
8285513722
共有 9 个文件被更改,包括 12 次插入14 次删除
  1. 1 1
      std/cpp/_std/IntHash.hx
  2. 2 2
      std/cs/_std/Hash.hx
  3. 2 2
      std/cs/_std/IntHash.hx
  4. 1 1
      std/flash8/_std/IntHash.hx
  5. 2 2
      std/java/_std/Hash.hx
  6. 2 2
      std/java/_std/IntHash.hx
  7. 1 1
      std/js/_std/Hash.hx
  8. 1 1
      std/js/_std/IntHash.hx
  9. 0 2
      type.ml

+ 1 - 1
std/cpp/_std/IntHash.hx

@@ -49,7 +49,7 @@
 
 
 	public function keys() : Iterator<Int> {
 	public function keys() : Iterator<Int> {
 		var a:Array<Int> = untyped __global__.__int_hash_keys(h);
 		var a:Array<Int> = untyped __global__.__int_hash_keys(h);
-		return cast a.iterator();
+		return a.iterator();
 	}
 	}
 
 
 	public function iterator() : Iterator<T> {
 	public function iterator() : Iterator<T> {

+ 2 - 2
std/cs/_std/Hash.hx

@@ -82,7 +82,7 @@
 	**/
 	**/
 	public function keys() : Iterator<String> 
 	public function keys() : Iterator<String> 
 	{
 	{
-		return cast keysArr.iterator();
+		return keysArr.iterator();
 	}
 	}
 
 
 	/**
 	/**
@@ -90,7 +90,7 @@
 	**/
 	**/
 	public function iterator() : Iterator<T> 
 	public function iterator() : Iterator<T> 
 	{
 	{
-		return cast valuesArr.iterator();
+		return valuesArr.iterator();
 	}
 	}
 
 
 	/**
 	/**

+ 2 - 2
std/cs/_std/IntHash.hx

@@ -82,7 +82,7 @@
 	**/
 	**/
 	public function keys() : Iterator<Int> 
 	public function keys() : Iterator<Int> 
 	{
 	{
-		return cast keysArr.iterator();
+		return keysArr.iterator();
 	}
 	}
 
 
 	/**
 	/**
@@ -90,7 +90,7 @@
 	**/
 	**/
 	public function iterator() : Iterator<T> 
 	public function iterator() : Iterator<T> 
 	{
 	{
-		return cast valuesArr.iterator();
+		return valuesArr.iterator();
 	}
 	}
 
 
 	/**
 	/**

+ 1 - 1
std/flash8/_std/IntHash.hx

@@ -53,7 +53,7 @@
 		var l : Array<Int> = untyped __keys__(h);
 		var l : Array<Int> = untyped __keys__(h);
 		for( x in 0...l.length )
 		for( x in 0...l.length )
 			l[x] = Std.int(l[x]);
 			l[x] = Std.int(l[x]);
-		return cast l.iterator();
+		return l.iterator();
 	}
 	}
 
 
 	public function iterator() : Iterator<T> {
 	public function iterator() : Iterator<T> {

+ 2 - 2
std/java/_std/Hash.hx

@@ -82,7 +82,7 @@
 	**/
 	**/
 	public function keys() : Iterator<String> 
 	public function keys() : Iterator<String> 
 	{
 	{
-		return cast keysArr.iterator();
+		return keysArr.iterator();
 	}
 	}
 
 
 	/**
 	/**
@@ -90,7 +90,7 @@
 	**/
 	**/
 	public function iterator() : Iterator<T> 
 	public function iterator() : Iterator<T> 
 	{
 	{
-		return cast valuesArr.iterator();
+		return valuesArr.iterator();
 	}
 	}
 
 
 	/**
 	/**

+ 2 - 2
std/java/_std/IntHash.hx

@@ -82,7 +82,7 @@
 	**/
 	**/
 	public function keys() : Iterator<Int> 
 	public function keys() : Iterator<Int> 
 	{
 	{
-		return cast keysArr.iterator();
+		return keysArr.iterator();
 	}
 	}
 
 
 	/**
 	/**
@@ -90,7 +90,7 @@
 	**/
 	**/
 	public function iterator() : Iterator<T> 
 	public function iterator() : Iterator<T> 
 	{
 	{
-		return cast valuesArr.iterator();
+		return valuesArr.iterator();
 	}
 	}
 
 
 	/**
 	/**

+ 1 - 1
std/js/_std/Hash.hx

@@ -58,7 +58,7 @@
 					a.push(key.substr(1));
 					a.push(key.substr(1));
 			__js__("}");
 			__js__("}");
 		}
 		}
-		return cast a.iterator();
+		return a.iterator();
 	}
 	}
 
 
 	public function iterator() : Iterator<T> {
 	public function iterator() : Iterator<T> {

+ 1 - 1
std/js/_std/IntHash.hx

@@ -57,7 +57,7 @@
 					a.push(key|0);
 					a.push(key|0);
 			__js__("}");
 			__js__("}");
 		}
 		}
-		return cast a.iterator();
+		return a.iterator();
 	}
 	}
 
 
 	public function iterator() : Iterator<T> {
 	public function iterator() : Iterator<T> {

+ 0 - 2
type.ml

@@ -858,11 +858,9 @@ let rec unify a b =
 		if not (loop c1 tl1) then error [cannot_unify a b]
 		if not (loop c1 tl1) then error [cannot_unify a b]
 	| TFun (l1,r1) , TFun (l2,r2) when List.length l1 = List.length l2 ->
 	| TFun (l1,r1) , TFun (l2,r2) when List.length l1 = List.length l2 ->
 		(try
 		(try
-			if not (is_null r2) && is_null r1 then (match follow r2 with TMono _ | TDynamic _ -> () | _ -> error [cannot_unify r2 r1]);
 			unify r1 r2;
 			unify r1 r2;
 			List.iter2 (fun (_,o1,t1) (_,o2,t2) ->
 			List.iter2 (fun (_,o1,t1) (_,o2,t2) ->
 				if o1 && not o2 then error [Cant_force_optional];
 				if o1 && not o2 then error [Cant_force_optional];
-				if not (is_null t2) && is_null t1 then (match follow t2 with TMono _ | TDynamic _ -> () | _ -> error [cannot_unify t1 t2]);
 				unify t1 t2
 				unify t1 t2
 			) l2 l1 (* contravariance *)
 			) l2 l1 (* contravariance *)
 		with
 		with