Selaa lähdekoodia

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

Dan Korostelev 5 vuotta sitten
vanhempi
commit
f62bdc0237

+ 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>