1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

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.
This commit is contained in:
Mattias Buelens 2024-05-14 01:34:25 +02:00 committed by GitHub
parent f2dc3f9a94
commit 9338770a70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 52 additions and 11 deletions

View file

@ -4964,11 +4964,11 @@ const readableStreamAsyncIteratorPrototype = ObjectSetPrototypeOf({
return PromiseResolve({ value: undefined, done: true }); return PromiseResolve({ value: undefined, done: true });
}; };
const returnPromise = reader[_iteratorNext] reader[_iteratorNext] = reader[_iteratorNext]
? PromisePrototypeThen(reader[_iteratorNext], returnSteps, returnSteps) ? PromisePrototypeThen(reader[_iteratorNext], returnSteps, returnSteps)
: returnSteps(); : returnSteps();
return PromisePrototypeThen( return PromisePrototypeThen(
returnPromise, reader[_iteratorNext],
() => ({ value: arg, done: true }), () => ({ value: arg, done: true }),
); );
}, },

View file

@ -2795,7 +2795,26 @@
"XSLTProcessor interface: operation reset()", "XSLTProcessor interface: operation reset()",
"Window interface: attribute event", "Window interface: attribute event",
"idl_test setup", "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": [ "idlharness.window.html?include=Node": [
"Node interface: existence and properties of interface object", "Node interface: existence and properties of interface object",
@ -3296,8 +3315,18 @@
"valueOf.any.html": true, "valueOf.any.html": true,
"valueOf.any.worker.html": true "valueOf.any.worker.html": true
}, },
"idlharness.any.html": true, "idlharness.any.html": [
"idlharness.any.worker.html": true, "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": { "instance": {
"constructor-bad-imports.any.html": true, "constructor-bad-imports.any.html": true,
"constructor-bad-imports.any.worker.html": true, "constructor-bad-imports.any.worker.html": true,
@ -4512,7 +4541,15 @@
"<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded", "<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encoded",
"<area>: 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", "<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": [ "url-setters-a-area.window.html?include=file": [
"<a>: Setting <file://localhost/>.protocol = 'http' Cant switch from file URL with no host", "<a>: Setting <file://localhost/>.protocol = 'http' Cant switch from file URL with no host",
@ -4599,7 +4636,9 @@
"URL: Setting <non-spec:/>.pathname = '//p'", "URL: Setting <non-spec:/>.pathname = '//p'",
"URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", "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 <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-setters.any.html?include=file": [
"URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", "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'",
"URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from path", "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 <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-setters.any.worker.html?include=file": [
"URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes", "URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes",
@ -6603,8 +6644,8 @@
], ],
"forbidden-method.any.html": true, "forbidden-method.any.html": true,
"forbidden-method.any.worker.html": true, "forbidden-method.any.worker.html": true,
"request-bad-port.any.html": false, "request-bad-port.any.html": true,
"request-bad-port.any.worker.html": false, "request-bad-port.any.worker.html": true,
"request-cache-default-conditional.any.html": true, "request-cache-default-conditional.any.html": true,
"request-cache-default-conditional.any.worker.html": true, "request-cache-default-conditional.any.worker.html": true,
"request-cache-default.any.html": [ "request-cache-default.any.html": [

@ -1 +1 @@
Subproject commit daa07cf3c47652ed67e637f2a39bbc34f91cfe10 Subproject commit 5e8f71d73049d4fca2a8cbc62d40e821400f1624