Index: third_party/google_input_tools/third_party/closure_library/closure/goog/promise/thenable.js |
diff --git a/third_party/google_input_tools/third_party/closure_library/closure/goog/promise/thenable.js b/third_party/google_input_tools/third_party/closure_library/closure/goog/promise/thenable.js |
index dde8ec88cf7eab4129301b9ff7740ccf9d4f3d00..3999d6eaa4e0b8f78618cc2df274d2a47820a655 100644 |
--- a/third_party/google_input_tools/third_party/closure_library/closure/goog/promise/thenable.js |
+++ b/third_party/google_input_tools/third_party/closure_library/closure/goog/promise/thenable.js |
@@ -21,7 +21,7 @@ goog.provide('goog.Thenable'); |
* http://promisesaplus.com for interop with {@see goog.Promise}. |
* |
* @interface |
- * @extends {IThenable.<TYPE>} |
+ * @extends {IThenable<TYPE>} |
* @template TYPE |
*/ |
goog.Thenable = function() {}; |
@@ -41,8 +41,7 @@ goog.Thenable = function() {}; |
* with the rejection reason as argument, and the child Promise will be rejected |
* with the return value of the callback or thrown value. |
* |
- * @param {?(function(this:THIS, TYPE): |
- * (RESULT|IThenable.<RESULT>|Thenable))=} opt_onFulfilled A |
+ * @param {?(function(this:THIS, TYPE): VALUE)=} opt_onFulfilled A |
* function that will be invoked with the fulfillment value if the Promise |
* is fullfilled. |
* @param {?(function(this:THIS, *): *)=} opt_onRejected A function that will |
@@ -50,9 +49,25 @@ goog.Thenable = function() {}; |
* @param {THIS=} opt_context An optional context object that will be the |
* execution context for the callbacks. By default, functions are executed |
* with the default this. |
- * @return {!goog.Promise.<RESULT>} A new Promise that will receive the result |
+ * |
+ * @return {RESULT} A new Promise that will receive the result |
* of the fulfillment or rejection callback. |
- * @template RESULT,THIS |
+ * @template VALUE |
+ * @template THIS |
+ * |
+ * When a Promise (or thenable) is returned from the fulfilled callback, |
+ * the result is the payload of that promise, not the promise itself. |
+ * |
+ * @template RESULT := type('goog.Promise', |
+ * cond(isUnknown(VALUE), unknown(), |
+ * mapunion(VALUE, (V) => |
+ * cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'), |
+ * templateTypeOf(V, 0), |
+ * cond(sub(V, 'Thenable'), |
+ * unknown(), |
+ * V))))) |
+ * =: |
+ * |
*/ |
goog.Thenable.prototype.then = function(opt_onFulfilled, opt_onRejected, |
opt_context) {}; |
@@ -76,7 +91,7 @@ goog.Thenable.IMPLEMENTED_BY_PROP = '$goog_Thenable'; |
* Exports a 'then' method on the constructor prototype, so that the objects |
* also implement the extern {@see goog.Thenable} interface for interop with |
* other Promise implementations. |
- * @param {function(new:goog.Thenable,...[?])} ctor The class constructor. The |
+ * @param {function(new:goog.Thenable,...?)} ctor The class constructor. The |
* corresponding class must have already implemented the interface. |
*/ |
goog.Thenable.addImplementation = function(ctor) { |