From 1f522759fe752919a8d804d869794daed3ef82ce Mon Sep 17 00:00:00 2001 From: Kenta Moriuchi Date: Sun, 6 Oct 2024 21:09:11 +0900 Subject: [PATCH 1/3] Use string literal type in ArrayBuffer's `Symbol.toStringTag` --- src/lib/es2015.symbol.wellknown.d.ts | 2 +- .../assignSharedArrayBufferToArrayBuffer.errors.txt | 11 +++++++++++ .../assignSharedArrayBufferToArrayBuffer.js | 7 +++++++ .../assignSharedArrayBufferToArrayBuffer.symbols | 8 ++++++++ .../assignSharedArrayBufferToArrayBuffer.types | 13 +++++++++++++ .../es2017/assignSharedArrayBufferToArrayBuffer.ts | 4 ++++ 6 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.errors.txt create mode 100644 tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.js create mode 100644 tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.symbols create mode 100644 tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.types create mode 100644 tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts diff --git a/src/lib/es2015.symbol.wellknown.d.ts b/src/lib/es2015.symbol.wellknown.d.ts index ed5d1ddbb388f..1ab84be969fca 100644 --- a/src/lib/es2015.symbol.wellknown.d.ts +++ b/src/lib/es2015.symbol.wellknown.d.ts @@ -251,7 +251,7 @@ interface String { } interface ArrayBuffer { - readonly [Symbol.toStringTag]: string; + readonly [Symbol.toStringTag]: "ArrayBuffer"; } interface DataView { diff --git a/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.errors.txt b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.errors.txt new file mode 100644 index 0000000000000..cc22119ec5064 --- /dev/null +++ b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.errors.txt @@ -0,0 +1,11 @@ +assignSharedArrayBufferToArrayBuffer.ts(1,5): error TS2322: Type 'SharedArrayBuffer' is not assignable to type 'ArrayBuffer'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"SharedArrayBuffer"' is not assignable to type '"ArrayBuffer"'. + + +==== assignSharedArrayBufferToArrayBuffer.ts (1 errors) ==== + var foo: ArrayBuffer = new SharedArrayBuffer(1024); // should error + ~~~ +!!! error TS2322: Type 'SharedArrayBuffer' is not assignable to type 'ArrayBuffer'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"SharedArrayBuffer"' is not assignable to type '"ArrayBuffer"'. \ No newline at end of file diff --git a/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.js b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.js new file mode 100644 index 0000000000000..f7642aae6275d --- /dev/null +++ b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.js @@ -0,0 +1,7 @@ +//// [tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts] //// + +//// [assignSharedArrayBufferToArrayBuffer.ts] +var foo: ArrayBuffer = new SharedArrayBuffer(1024); // should error + +//// [assignSharedArrayBufferToArrayBuffer.js] +var foo = new SharedArrayBuffer(1024); // should error diff --git a/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.symbols b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.symbols new file mode 100644 index 0000000000000..43cfb5a1787b0 --- /dev/null +++ b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.symbols @@ -0,0 +1,8 @@ +//// [tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts] //// + +=== assignSharedArrayBufferToArrayBuffer.ts === +var foo: ArrayBuffer = new SharedArrayBuffer(1024); // should error +>foo : Symbol(foo, Decl(assignSharedArrayBufferToArrayBuffer.ts, 0, 3)) +>ArrayBuffer : Symbol(ArrayBuffer, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --)) + diff --git a/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.types b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.types new file mode 100644 index 0000000000000..1f6b881dfb452 --- /dev/null +++ b/tests/baselines/reference/assignSharedArrayBufferToArrayBuffer.types @@ -0,0 +1,13 @@ +//// [tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts] //// + +=== assignSharedArrayBufferToArrayBuffer.ts === +var foo: ArrayBuffer = new SharedArrayBuffer(1024); // should error +>foo : ArrayBuffer +> : ^^^^^^^^^^^ +>new SharedArrayBuffer(1024) : SharedArrayBuffer +> : ^^^^^^^^^^^^^^^^^ +>SharedArrayBuffer : SharedArrayBufferConstructor +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>1024 : 1024 +> : ^^^^ + diff --git a/tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts b/tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts new file mode 100644 index 0000000000000..f0a38d9ee04f4 --- /dev/null +++ b/tests/cases/conformance/es2017/assignSharedArrayBufferToArrayBuffer.ts @@ -0,0 +1,4 @@ +// @target: es5 +// @lib: es2015,es2017.sharedmemory + +var foo: ArrayBuffer = new SharedArrayBuffer(1024); // should error \ No newline at end of file From f90cb7337a6080ad5bbcecef94ebe6b8124713c6 Mon Sep 17 00:00:00 2001 From: Kenta Moriuchi Date: Mon, 7 Oct 2024 00:48:53 +0900 Subject: [PATCH 2/3] fix --- src/harness/vfsUtil.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/harness/vfsUtil.ts b/src/harness/vfsUtil.ts index 1995d79ab6da0..428e46cd7cf49 100644 --- a/src/harness/vfsUtil.ts +++ b/src/harness/vfsUtil.ts @@ -632,12 +632,6 @@ export class FileSystem { return realpath; } - /** - * Read from a file. - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - public readFileSync(path: string, encoding?: null): Buffer; // eslint-disable-line no-restricted-syntax /** * Read from a file. * From 662aedb74f90d9c9317509e80e5a5af7a0bd5448 Mon Sep 17 00:00:00 2001 From: Kenta Moriuchi Date: Fri, 31 Jan 2025 03:30:59 +0900 Subject: [PATCH 3/3] fix --- src/harness/vfsUtil.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/harness/vfsUtil.ts b/src/harness/vfsUtil.ts index 3c5d637f3a164..596575beece2c 100644 --- a/src/harness/vfsUtil.ts +++ b/src/harness/vfsUtil.ts @@ -632,6 +632,12 @@ export class FileSystem { return realpath; } + /** + * Read from a file. + * + * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. + */ + public readFileSync(path: string, encoding?: null): Buffer; // eslint-disable-line no-restricted-syntax /** * Read from a file. * @@ -643,7 +649,7 @@ export class FileSystem { * * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. */ - public readFileSync(path: string, encoding?: BufferEncoding | null): string | Buffer; // eslint-disable-line no-restricted-syntax + public readFileSync(path: string, encoding?: BufferEncoding | null): string | Buffer; // eslint-disable-line no-restricted-syntax public readFileSync(path: string, encoding: BufferEncoding | null = null) { // eslint-disable-line no-restricted-syntax const { node } = this._walk(this._resolve(path)); if (!node) throw createIOError("ENOENT");