mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-09 16:39:46 -05:00
Fix(49198): Added missing definition for Atomics.waitAsync and es2022 sharedmemory file (#49204)
* feat(sharedmemory): Added file waitAsync function * fix: Adjusted promise return type * Fix(sharedmemory): Addressed PR comments * Fix: Removed unused @see at sharedmemory * Feat: Added tests to shared memory * Fix: fixed ordering in libs.json * Feat: Added shared memory to line parser * Update tests es2022SharedMemory.ts as sugested Co-authored-by: Eyal Halpern Shalev <eyalsh@gmail.com> * Update es2022SharedMemory.ts * feat: Accepted baselines * fix: Adjusted grammar changes in jsdoc * fix(47821): skip nodes with export modifiers (#47829) * Use symbolic GitHub Actions Node.js versions (#49403) * update baselines Co-authored-by: Eyal Halpern Shalev <eyalsh@gmail.com> Co-authored-by: Oleksandr T <oleksandr.tarasiuk@outlook.com> Co-authored-by: Jack Bates <jack@nottheoilrig.com> Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
This commit is contained in:
@@ -83,6 +83,7 @@ namespace ts {
|
||||
["es2022.error", "lib.es2022.error.d.ts"],
|
||||
["es2022.intl", "lib.es2022.intl.d.ts"],
|
||||
["es2022.object", "lib.es2022.object.d.ts"],
|
||||
["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"],
|
||||
["es2022.string", "lib.es2022.string.d.ts"],
|
||||
["esnext.array", "lib.es2022.array.d.ts"],
|
||||
["esnext.symbol", "lib.es2019.symbol.d.ts"],
|
||||
|
||||
1
src/lib/es2022.d.ts
vendored
1
src/lib/es2022.d.ts
vendored
@@ -3,4 +3,5 @@
|
||||
/// <reference lib="es2022.error" />
|
||||
/// <reference lib="es2022.intl" />
|
||||
/// <reference lib="es2022.object" />
|
||||
/// <reference lib="es2022.sharedmemory" />
|
||||
/// <reference lib="es2022.string" />
|
||||
|
||||
7
src/lib/es2022.sharedmemory.d.ts
vendored
Normal file
7
src/lib/es2022.sharedmemory.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
interface Atomics {
|
||||
/**
|
||||
* A non-blocking, asynchronous version of wait which is usable on the main thread.
|
||||
* Waits asynchronously on a shared memory location and returns a Promise
|
||||
*/
|
||||
waitAsync(typedArray: BigInt64Array | Int32Array, index: number, value: bigint, timeout?: number): { async: false, value: "ok" | "not-equal" | "timed-out" } | { async: true, value: Promise<"ok" | "not-equal" | "timed-out"> };
|
||||
}
|
||||
@@ -59,6 +59,7 @@
|
||||
"es2022.error",
|
||||
"es2022.intl",
|
||||
"es2022.object",
|
||||
"es2022.sharedmemory",
|
||||
"es2022.string",
|
||||
"esnext.intl",
|
||||
// Default libraries
|
||||
|
||||
42
tests/baselines/reference/es2022SharedMemory.symbols
Normal file
42
tests/baselines/reference/es2022SharedMemory.symbols
Normal file
@@ -0,0 +1,42 @@
|
||||
=== tests/cases/conformance/es2022/es2022SharedMemory.ts ===
|
||||
const sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024);
|
||||
>sab : Symbol(sab, Decl(es2022SharedMemory.ts, 0, 5))
|
||||
>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --))
|
||||
>Int32Array.BYTES_PER_ELEMENT : Symbol(Int32ArrayConstructor.BYTES_PER_ELEMENT, Decl(lib.es5.d.ts, --, --))
|
||||
>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 1 more)
|
||||
>BYTES_PER_ELEMENT : Symbol(Int32ArrayConstructor.BYTES_PER_ELEMENT, Decl(lib.es5.d.ts, --, --))
|
||||
|
||||
const int32 = new Int32Array(sab);
|
||||
>int32 : Symbol(int32, Decl(es2022SharedMemory.ts, 1, 5))
|
||||
>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 1 more)
|
||||
>sab : Symbol(sab, Decl(es2022SharedMemory.ts, 0, 5))
|
||||
|
||||
const waitValue = Atomics.wait(int32, 0, 0);
|
||||
>waitValue : Symbol(waitValue, Decl(es2022SharedMemory.ts, 2, 5))
|
||||
>Atomics.wait : Symbol(Atomics.wait, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --))
|
||||
>Atomics : Symbol(Atomics, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --), Decl(lib.es2022.sharedmemory.d.ts, --, --))
|
||||
>wait : Symbol(Atomics.wait, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --))
|
||||
>int32 : Symbol(int32, Decl(es2022SharedMemory.ts, 1, 5))
|
||||
|
||||
const { async, value } = Atomics.waitAsync(int32, 0, BigInt(0));
|
||||
>async : Symbol(async, Decl(es2022SharedMemory.ts, 3, 7))
|
||||
>value : Symbol(value, Decl(es2022SharedMemory.ts, 3, 14))
|
||||
>Atomics.waitAsync : Symbol(Atomics.waitAsync, Decl(lib.es2022.sharedmemory.d.ts, --, --))
|
||||
>Atomics : Symbol(Atomics, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --), Decl(lib.es2022.sharedmemory.d.ts, --, --))
|
||||
>waitAsync : Symbol(Atomics.waitAsync, Decl(lib.es2022.sharedmemory.d.ts, --, --))
|
||||
>int32 : Symbol(int32, Decl(es2022SharedMemory.ts, 1, 5))
|
||||
>BigInt : Symbol(BigInt, Decl(lib.es2020.bigint.d.ts, --, --), Decl(lib.es2020.bigint.d.ts, --, --))
|
||||
|
||||
const main = async () => {
|
||||
>main : Symbol(main, Decl(es2022SharedMemory.ts, 5, 5))
|
||||
|
||||
if (async) {
|
||||
>async : Symbol(async, Decl(es2022SharedMemory.ts, 3, 7))
|
||||
|
||||
await value;
|
||||
>value : Symbol(value, Decl(es2022SharedMemory.ts, 3, 14))
|
||||
}
|
||||
}
|
||||
main();
|
||||
>main : Symbol(main, Decl(es2022SharedMemory.ts, 5, 5))
|
||||
|
||||
56
tests/baselines/reference/es2022SharedMemory.types
Normal file
56
tests/baselines/reference/es2022SharedMemory.types
Normal file
@@ -0,0 +1,56 @@
|
||||
=== tests/cases/conformance/es2022/es2022SharedMemory.ts ===
|
||||
const sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024);
|
||||
>sab : SharedArrayBuffer
|
||||
>new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024) : SharedArrayBuffer
|
||||
>SharedArrayBuffer : SharedArrayBufferConstructor
|
||||
>Int32Array.BYTES_PER_ELEMENT * 1024 : number
|
||||
>Int32Array.BYTES_PER_ELEMENT : number
|
||||
>Int32Array : Int32ArrayConstructor
|
||||
>BYTES_PER_ELEMENT : number
|
||||
>1024 : 1024
|
||||
|
||||
const int32 = new Int32Array(sab);
|
||||
>int32 : Int32Array
|
||||
>new Int32Array(sab) : Int32Array
|
||||
>Int32Array : Int32ArrayConstructor
|
||||
>sab : SharedArrayBuffer
|
||||
|
||||
const waitValue = Atomics.wait(int32, 0, 0);
|
||||
>waitValue : "ok" | "not-equal" | "timed-out"
|
||||
>Atomics.wait(int32, 0, 0) : "ok" | "not-equal" | "timed-out"
|
||||
>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; }
|
||||
>Atomics : Atomics
|
||||
>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; }
|
||||
>int32 : Int32Array
|
||||
>0 : 0
|
||||
>0 : 0
|
||||
|
||||
const { async, value } = Atomics.waitAsync(int32, 0, BigInt(0));
|
||||
>async : boolean
|
||||
>value : "ok" | "not-equal" | "timed-out" | Promise<"ok" | "not-equal" | "timed-out">
|
||||
>Atomics.waitAsync(int32, 0, BigInt(0)) : { async: false; value: "ok" | "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "not-equal" | "timed-out">; }
|
||||
>Atomics.waitAsync : (typedArray: Int32Array | BigInt64Array, index: number, value: bigint, timeout?: number | undefined) => { async: false; value: "ok" | "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "not-equal" | "timed-out">; }
|
||||
>Atomics : Atomics
|
||||
>waitAsync : (typedArray: Int32Array | BigInt64Array, index: number, value: bigint, timeout?: number | undefined) => { async: false; value: "ok" | "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "not-equal" | "timed-out">; }
|
||||
>int32 : Int32Array
|
||||
>0 : 0
|
||||
>BigInt(0) : bigint
|
||||
>BigInt : BigIntConstructor
|
||||
>0 : 0
|
||||
|
||||
const main = async () => {
|
||||
>main : () => Promise<void>
|
||||
>async () => { if (async) { await value; }} : () => Promise<void>
|
||||
|
||||
if (async) {
|
||||
>async : boolean
|
||||
|
||||
await value;
|
||||
>await value : "ok" | "not-equal" | "timed-out"
|
||||
>value : Promise<"ok" | "not-equal" | "timed-out">
|
||||
}
|
||||
}
|
||||
main();
|
||||
>main() : Promise<void>
|
||||
>main : () => Promise<void>
|
||||
|
||||
@@ -147,5 +147,7 @@
|
||||
"File 'package.json' does not exist according to earlier cached lookups.",
|
||||
"File '/package.json' does not exist according to earlier cached lookups.",
|
||||
"File 'package.json' does not exist according to earlier cached lookups.",
|
||||
"File '/package.json' does not exist according to earlier cached lookups.",
|
||||
"File 'package.json' does not exist according to earlier cached lookups.",
|
||||
"File '/package.json' does not exist according to earlier cached lookups."
|
||||
]
|
||||
@@ -141,5 +141,7 @@
|
||||
"File 'package.json' does not exist according to earlier cached lookups.",
|
||||
"File '/package.json' does not exist according to earlier cached lookups.",
|
||||
"File 'package.json' does not exist according to earlier cached lookups.",
|
||||
"File '/package.json' does not exist according to earlier cached lookups.",
|
||||
"File 'package.json' does not exist according to earlier cached lookups.",
|
||||
"File '/package.json' does not exist according to earlier cached lookups."
|
||||
]
|
||||
@@ -90,7 +90,7 @@ default: undefined
|
||||
|
||||
--lib
|
||||
Specify a set of bundled library declaration files that describe the target runtime environment.
|
||||
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.string/esnext.string, esnext.intl
|
||||
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, esnext.intl
|
||||
default: undefined
|
||||
|
||||
--allowJs
|
||||
|
||||
@@ -90,7 +90,7 @@ default: undefined
|
||||
|
||||
[94m--lib[39m
|
||||
Specify a set of bundled library declaration files that describe the target runtime environment.
|
||||
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.string/esnext.string, esnext.intl
|
||||
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, esnext.intl
|
||||
default: undefined
|
||||
|
||||
[94m--allowJs[39m
|
||||
|
||||
@@ -90,7 +90,7 @@ default: undefined
|
||||
|
||||
[94m--lib[39m
|
||||
Specify a set of bundled library declaration files that describe the target runtime environment.
|
||||
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.string/esnext.string, esnext.intl
|
||||
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, esnext.intl
|
||||
default: undefined
|
||||
|
||||
[94m--allowJs[39m
|
||||
|
||||
16
tests/cases/conformance/es2022/es2022SharedMemory.ts
Normal file
16
tests/cases/conformance/es2022/es2022SharedMemory.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
// @target: esnext
|
||||
// @lib: es2022
|
||||
// @noemit: true
|
||||
// @strict: true
|
||||
|
||||
const sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024);
|
||||
const int32 = new Int32Array(sab);
|
||||
const waitValue = Atomics.wait(int32, 0, 0);
|
||||
const { async, value } = Atomics.waitAsync(int32, 0, BigInt(0));
|
||||
|
||||
const main = async () => {
|
||||
if (async) {
|
||||
await value;
|
||||
}
|
||||
}
|
||||
main();
|
||||
Reference in New Issue
Block a user