浏览代码

[js] improve typing for Promise.catchError (closes #8170)

Dan Korostelev 5 年之前
父节点
当前提交
f62bdc0237
共有 3 个文件被更改,包括 9 次插入3 次删除
  1. 2 1
      std/js/lib/Promise.hx
  2. 1 0
      tests/misc/projects/Issue6790/Main.hx
  3. 6 2
      tests/misc/projects/Issue6790/compile.hxml.stderr

+ 2 - 1
std/js/lib/Promise.hx

@@ -85,7 +85,8 @@ extern class Promise<T> {
 		or to its original fulfillment value if the promise is instead fulfilled.
 	**/
 	@:native("catch")
-	function catchError<TOut>(onRejected:PromiseHandler<Dynamic, TOut>):Promise<TOut>;
+	@:overload(function<TOut>(onRejected:PromiseHandler<Dynamic, TOut>):Promise<EitherType<T, TOut>> {})
+	function catchError(onRejected:PromiseHandler<Dynamic, T>):Promise<T>;
 }
 
 /**

+ 1 - 0
tests/misc/projects/Issue6790/Main.hx

@@ -20,5 +20,6 @@ class Main {
 
 		$type(p.catchError(function(x) {$type(x);}));
 		$type(p.catchError(function(x) {$type(x); return Promise.resolve(1);}));
+		$type(p.catchError(function(x) {$type(x); return Promise.resolve("heh");}));
 	}
 }

+ 6 - 2
tests/misc/projects/Issue6790/compile.hxml.stderr

@@ -24,6 +24,10 @@ Main.hx:19: characters 35-36 : Warning : String
 Main.hx:19: characters 87-88 : Warning : Unknown<0>
 Main.hx:19: characters 9-119 : Warning : js.lib.Promise<Int>
 Main.hx:21: characters 41-42 : Warning : Unknown<0>
-Main.hx:21: characters 9-46 : Warning : js.lib.Promise<Void>
+Main.hx:21: characters 41-42 : Warning : Unknown<0>
+Main.hx:21: characters 9-46 : Warning : js.lib.Promise<haxe.extern.EitherType<String, Void>>
+Main.hx:22: characters 41-42 : Warning : Unknown<0>
 Main.hx:22: characters 41-42 : Warning : Unknown<0>
-Main.hx:22: characters 9-73 : Warning : js.lib.Promise<Int>
+Main.hx:22: characters 9-73 : Warning : js.lib.Promise<haxe.extern.EitherType<String, Int>>
+Main.hx:23: characters 41-42 : Warning : Unknown<0>
+Main.hx:23: characters 9-77 : Warning : js.lib.Promise<String>