diff options
author | Mattias Buelens <649348+MattiasBuelens@users.noreply.github.com> | 2024-05-14 01:34:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-13 23:34:25 +0000 |
commit | 9338770a709b3f0bc79c9b3d00e5f522857a5c5c (patch) | |
tree | 7d530879d8db68e927ddd3bd9711dab43be8e8a5 | |
parent | f2dc3f9a94444b1a5a40570be09c7f64903d27cb (diff) |
fix(ext/web): update ongoing promise in async iterator `return()` method (#23642)
See https://github.com/whatwg/webidl/pull/1387 for context.
There are new WPT tests for this change in
https://github.com/web-platform-tests/wpt/pull/44456. They pass on my
local machine, but I'm not sure if I should update the WPT submodule for
all of Deno as part of this PR?
Fixes #22389
---------
Co-authored-by: Asher Gomez <ashersaupingomez@gmail.
-rw-r--r-- | ext/web/06_streams.js | 4 | ||||
-rw-r--r-- | tests/wpt/runner/expectation.json | 57 | ||||
m--------- | tests/wpt/suite | 0 |
3 files changed, 51 insertions, 10 deletions
diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index e0e3ccbbe..9c2a05980 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -4964,11 +4964,11 @@ const readableStreamAsyncIteratorPrototype = ObjectSetPrototypeOf({ return PromiseResolve({ value: undefined, done: true }); }; - const returnPromise = reader[_iteratorNext] + reader[_iteratorNext] = reader[_iteratorNext] ? PromisePrototypeThen(reader[_iteratorNext], returnSteps, returnSteps) : returnSteps(); return PromisePrototypeThen( - returnPromise, + reader[_iteratorNext], () => ({ value: arg, done: true }), ); }, diff --git a/tests/wpt/runner/expectation.json b/tests/wpt/runner/expectation.json index f20cd78f1..866b85d52 100644 --- a/tests/wpt/runner/expectation.json +++ b/tests/wpt/runner/expectation.json @@ -2795,7 +2795,26 @@ "XSLTProcessor interface: operation reset()", "Window interface: attribute event", "idl_test setup", - "ShadowRoot interface: attribute clonable" + "ShadowRoot interface: attribute clonable", + "Document interface: operation prepend((Node or TrustedScript or DOMString)...)", + "Document interface: operation append((Node or TrustedScript or DOMString)...)", + "Document interface: operation replaceChildren((Node or TrustedScript or DOMString)...)", + "DocumentType interface: operation before((Node or TrustedScript or DOMString)...)", + "DocumentType interface: operation after((Node or TrustedScript or DOMString)...)", + "DocumentType interface: operation replaceWith((Node or TrustedScript or DOMString)...)", + "DocumentFragment interface: operation prepend((Node or TrustedScript or DOMString)...)", + "DocumentFragment interface: operation append((Node or TrustedScript or DOMString)...)", + "DocumentFragment interface: operation replaceChildren((Node or TrustedScript or DOMString)...)", + "ShadowRoot interface: attribute serializable", + "Element interface: operation prepend((Node or TrustedScript or DOMString)...)", + "Element interface: operation append((Node or TrustedScript or DOMString)...)", + "Element interface: operation replaceChildren((Node or TrustedScript or DOMString)...)", + "Element interface: operation before((Node or TrustedScript or DOMString)...)", + "Element interface: operation after((Node or TrustedScript or DOMString)...)", + "Element interface: operation replaceWith((Node or TrustedScript or DOMString)...)", + "CharacterData interface: operation before((Node or TrustedScript or DOMString)...)", + "CharacterData interface: operation after((Node or TrustedScript or DOMString)...)", + "CharacterData interface: operation replaceWith((Node or TrustedScript or DOMString)...)" ], "idlharness.window.html?include=Node": [ "Node interface: existence and properties of interface object", @@ -3296,8 +3315,18 @@ "valueOf.any.html": true, "valueOf.any.worker.html": true }, - "idlharness.any.html": true, - "idlharness.any.worker.html": true, + "idlharness.any.html": [ + "Memory interface: operation toFixedLengthBuffer()", + "Memory interface: operation toResizableBuffer()", + "Memory interface: [object WebAssembly.Memory] must inherit property \"toFixedLengthBuffer()\" with the proper type", + "Memory interface: [object WebAssembly.Memory] must inherit property \"toResizableBuffer()\" with the proper type" + ], + "idlharness.any.worker.html": [ + "Memory interface: operation toFixedLengthBuffer()", + "Memory interface: operation toResizableBuffer()", + "Memory interface: [object WebAssembly.Memory] must inherit property \"toFixedLengthBuffer()\" with the proper type", + "Memory interface: [object WebAssembly.Memory] must inherit property \"toResizableBuffer()\" with the proper type" + ], "instance": { "constructor-bad-imports.any.html": true, "constructor-bad-imports.any.worker.html": true, @@ -4512,7 +4541,15 @@ "<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded", "<area>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded", "<a>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded", - "<area>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded" + "<area>: Setting <http://example.net>.hash = '\u0000' Trailing C0 control should be encoded", + "<a>: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'", + "<area>: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'", + "<a>: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<area>: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "<a>: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without port", + "<area>: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without port" ], "url-setters-a-area.window.html?include=file": [ "<a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host", @@ -4599,7 +4636,9 @@ "URL: Setting <non-spec:/>.pathname = '//p'", "URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", "URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths", - "URL: Setting <sc:space ?query#fragment>.search = ''" + "URL: Setting <sc:space ?query#fragment>.search = ''", + "URL: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "URL: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error" ], "url-setters.any.html?include=file": [ "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", @@ -4621,7 +4660,9 @@ "URL: Setting <non-spec:/>.pathname = '//p'", "URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", "URL: Setting <data:space ?query#fragment>.search = '' Do not drop trailing spaces from non-trailing opaque paths", - "URL: Setting <sc:space ?query#fragment>.search = ''" + "URL: Setting <sc:space ?query#fragment>.search = ''", + "URL: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error", + "URL: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error" ], "url-setters.any.worker.html?include=file": [ "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", @@ -6603,8 +6644,8 @@ ], "forbidden-method.any.html": true, "forbidden-method.any.worker.html": true, - "request-bad-port.any.html": false, - "request-bad-port.any.worker.html": false, + "request-bad-port.any.html": true, + "request-bad-port.any.worker.html": true, "request-cache-default-conditional.any.html": true, "request-cache-default-conditional.any.worker.html": true, "request-cache-default.any.html": [ diff --git a/tests/wpt/suite b/tests/wpt/suite -Subproject daa07cf3c47652ed67e637f2a39bbc34f91cfe1 +Subproject 5e8f71d73049d4fca2a8cbc62d40e821400f162 |