Skip to content

Commit

Permalink
fix(ext/web): update ongoing promise in async iterator return() met…
Browse files Browse the repository at this point in the history
…hod (#23642)

See whatwg/webidl#1387 for context.

There are new WPT tests for this change in
web-platform-tests/wpt#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.
  • Loading branch information
MattiasBuelens authored and bartlomieju committed May 16, 2024
1 parent 420023c commit 03488ca
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 11 deletions.
4 changes: 2 additions & 2 deletions ext/web/06_streams.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 }),
);
},
Expand Down
57 changes: 49 additions & 8 deletions tests/wpt/runner/expectation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion tests/wpt/suite
Submodule suite updated 1463 files

0 comments on commit 03488ca

Please sign in to comment.