From 08f505532f852ed3d6611cefc924f6665edd926d Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 21:31:38 +0300 Subject: [PATCH 1/9] init --- src/bindings/js.ts | 3 +++ tests/compiler/bindings/esm.debug.js | 1 + tests/compiler/bindings/esm.release.js | 1 + 3 files changed, 5 insertions(+) diff --git a/src/bindings/js.ts b/src/bindings/js.ts index 52f0e6d08d..397c946ce5 100644 --- a/src/bindings/js.ts +++ b/src/bindings/js.ts @@ -864,6 +864,9 @@ export class JSBuilder extends ExportsWalker { if (this.esm) { sb.push("export const {\n "); + if (this.program.options.exportMemory) { + sb.push("memory,\n "); + } for (let i = 0, k = exports.length; i < k; ++i) { if (i > 0) sb.push(",\n "); sb.push(exports[i]); diff --git a/tests/compiler/bindings/esm.debug.js b/tests/compiler/bindings/esm.debug.js index ad6cfd1467..2ed8899ad1 100644 --- a/tests/compiler/bindings/esm.debug.js +++ b/tests/compiler/bindings/esm.debug.js @@ -352,6 +352,7 @@ async function instantiate(module, imports = {}) { return adaptedExports; } export const { + memory, plainGlobal, plainMutableGlobal, stringGlobal, diff --git a/tests/compiler/bindings/esm.release.js b/tests/compiler/bindings/esm.release.js index f2b51c2895..0904cae7e7 100644 --- a/tests/compiler/bindings/esm.release.js +++ b/tests/compiler/bindings/esm.release.js @@ -352,6 +352,7 @@ async function instantiate(module, imports = {}) { return adaptedExports; } export const { + memory, plainGlobal, plainMutableGlobal, stringGlobal, From a03f3c2fb960eebfef558d59abf1f28a289aa3e0 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 21:45:00 +0300 Subject: [PATCH 2/9] add memory definitions for tsd generator --- src/bindings/tsd.ts | 3 +++ tests/compiler/bindings/esm.debug.d.ts | 1 + tests/compiler/bindings/esm.release.d.ts | 1 + 3 files changed, 5 insertions(+) diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts index ffab273e0b..beadbd8c6b 100644 --- a/src/bindings/tsd.ts +++ b/src/bindings/tsd.ts @@ -213,6 +213,9 @@ export class TSDBuilder extends ExportsWalker { } sb.push("}): Promise;\n"); } + if (this.program.options.exportMemory) { + sb.push("export declare const memory: WebAssembly.Memory;\n"); + } return sb.join(""); } diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts index a9d795fee1..7c685708b0 100644 --- a/tests/compiler/bindings/esm.debug.d.ts +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -152,3 +152,4 @@ declare interface __Record8 { declare class __Internref11 extends Number { private __nominal11: symbol; } +export declare const memory: WebAssembly.Memory; diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts index a9d795fee1..7c685708b0 100644 --- a/tests/compiler/bindings/esm.release.d.ts +++ b/tests/compiler/bindings/esm.release.d.ts @@ -152,3 +152,4 @@ declare interface __Record8 { declare class __Internref11 extends Number { private __nominal11: symbol; } +export declare const memory: WebAssembly.Memory; From e6d2d19fc1435adc1a3a1432a449670126a5e9f4 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 21:55:49 +0300 Subject: [PATCH 3/9] move declaration on top --- src/bindings/tsd.ts | 7 ++++--- tests/compiler/bindings/esm.debug.d.ts | 3 ++- tests/compiler/bindings/esm.release.d.ts | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts index beadbd8c6b..6aa5076b45 100644 --- a/src/bindings/tsd.ts +++ b/src/bindings/tsd.ts @@ -186,6 +186,10 @@ export class TSDBuilder extends ExportsWalker { sb.push("declare namespace __AdaptedExports {\n"); ++this.indentLevel; } + if (this.program.options.exportMemory) { + sb.push("/** bindings/esm/memory */\n"); + sb.push("export declare const memory: WebAssembly.Memory;\n"); + } this.walk(); if (!this.esm) { --this.indentLevel; @@ -213,9 +217,6 @@ export class TSDBuilder extends ExportsWalker { } sb.push("}): Promise;\n"); } - if (this.program.options.exportMemory) { - sb.push("export declare const memory: WebAssembly.Memory;\n"); - } return sb.join(""); } diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts index 7c685708b0..39a84ebe6b 100644 --- a/tests/compiler/bindings/esm.debug.d.ts +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -1,3 +1,5 @@ +/** bindings/esm/memory */ +export declare const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export declare const plainGlobal: { /** @type `i32` */ @@ -152,4 +154,3 @@ declare interface __Record8 { declare class __Internref11 extends Number { private __nominal11: symbol; } -export declare const memory: WebAssembly.Memory; diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts index 7c685708b0..39a84ebe6b 100644 --- a/tests/compiler/bindings/esm.release.d.ts +++ b/tests/compiler/bindings/esm.release.d.ts @@ -1,3 +1,5 @@ +/** bindings/esm/memory */ +export declare const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export declare const plainGlobal: { /** @type `i32` */ @@ -152,4 +154,3 @@ declare interface __Record8 { declare class __Internref11 extends Number { private __nominal11: symbol; } -export declare const memory: WebAssembly.Memory; From a691b02721c115ba34a1af7083a17104cd6de38c Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 21:58:29 +0300 Subject: [PATCH 4/9] use it only for esm --- src/bindings/tsd.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts index 6aa5076b45..3c40b57640 100644 --- a/src/bindings/tsd.ts +++ b/src/bindings/tsd.ts @@ -185,10 +185,11 @@ export class TSDBuilder extends ExportsWalker { if (!this.esm) { sb.push("declare namespace __AdaptedExports {\n"); ++this.indentLevel; - } - if (this.program.options.exportMemory) { - sb.push("/** bindings/esm/memory */\n"); - sb.push("export declare const memory: WebAssembly.Memory;\n"); + } else { + if (this.program.options.exportMemory) { + sb.push("/** bindings/esm/memory */\n"); + sb.push("export declare const memory: WebAssembly.Memory;\n"); + } } this.walk(); if (!this.esm) { From e974445fa56a89a75be80bf94541b7b8cef4b831 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 27 Jun 2022 22:03:08 +0300 Subject: [PATCH 5/9] Update src/bindings/tsd.ts Co-authored-by: dcode --- src/bindings/tsd.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts index 3c40b57640..7f5325bde5 100644 --- a/src/bindings/tsd.ts +++ b/src/bindings/tsd.ts @@ -187,7 +187,7 @@ export class TSDBuilder extends ExportsWalker { ++this.indentLevel; } else { if (this.program.options.exportMemory) { - sb.push("/** bindings/esm/memory */\n"); + sb.push("/** Exported memory */\n"); sb.push("export declare const memory: WebAssembly.Memory;\n"); } } From 3426b653bc07a60ca76b1af6317e277aa46f6110 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 22:03:55 +0300 Subject: [PATCH 6/9] update --- tests/compiler/bindings/esm.debug.d.ts | 2 +- tests/compiler/bindings/esm.release.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts index 39a84ebe6b..b23f4d687d 100644 --- a/tests/compiler/bindings/esm.debug.d.ts +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -1,4 +1,4 @@ -/** bindings/esm/memory */ +/** Exported memory */ export declare const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export declare const plainGlobal: { diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts index 39a84ebe6b..b23f4d687d 100644 --- a/tests/compiler/bindings/esm.release.d.ts +++ b/tests/compiler/bindings/esm.release.d.ts @@ -1,4 +1,4 @@ -/** bindings/esm/memory */ +/** Exported memory */ export declare const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export declare const plainGlobal: { From 0afc8020874fa0026105ce458244839056eb9228 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 22:14:45 +0300 Subject: [PATCH 7/9] add table and adopt definitions for raw bindings as well --- src/bindings/js.ts | 3 +++ src/bindings/tsd.ts | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/bindings/js.ts b/src/bindings/js.ts index 397c946ce5..68c4bbd3a5 100644 --- a/src/bindings/js.ts +++ b/src/bindings/js.ts @@ -867,6 +867,9 @@ export class JSBuilder extends ExportsWalker { if (this.program.options.exportMemory) { sb.push("memory,\n "); } + if (this.program.options.exportTable) { + sb.push("table,\n "); + } for (let i = 0, k = exports.length; i < k; ++i) { if (i > 0) sb.push(",\n "); sb.push(exports[i]); diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts index 7f5325bde5..c1628cda14 100644 --- a/src/bindings/tsd.ts +++ b/src/bindings/tsd.ts @@ -185,11 +185,18 @@ export class TSDBuilder extends ExportsWalker { if (!this.esm) { sb.push("declare namespace __AdaptedExports {\n"); ++this.indentLevel; - } else { - if (this.program.options.exportMemory) { - sb.push("/** Exported memory */\n"); - sb.push("export declare const memory: WebAssembly.Memory;\n"); - } + } + if (this.program.options.exportMemory) { + indent(sb, this.indentLevel); + sb.push("/** Exported memory */\n"); + indent(sb, this.indentLevel); + sb.push(`export ${this.esm ? "declare" : ""} const memory: WebAssembly.Memory;\n`); + } + if (this.program.options.exportTable) { + indent(sb, this.indentLevel); + sb.push("/** Exported table */\n"); + indent(sb, this.indentLevel); + sb.push(`export ${this.esm ? "declare" : ""} const table: WebAssembly.Table;\n`); } this.walk(); if (!this.esm) { From dcedaf7fef174545fc3ec2c3e0dec3a953c0a9c3 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 22:23:48 +0300 Subject: [PATCH 8/9] update bindings/raw fixtures --- tests/compiler/bindings/raw.debug.d.ts | 2 ++ tests/compiler/bindings/raw.release.d.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/compiler/bindings/raw.debug.d.ts b/tests/compiler/bindings/raw.debug.d.ts index 14bc6d53ec..f5b61f90bf 100644 --- a/tests/compiler/bindings/raw.debug.d.ts +++ b/tests/compiler/bindings/raw.debug.d.ts @@ -1,4 +1,6 @@ declare namespace __AdaptedExports { + /** Exported memory */ + export const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export const plainGlobal: { /** @type `i32` */ diff --git a/tests/compiler/bindings/raw.release.d.ts b/tests/compiler/bindings/raw.release.d.ts index 14bc6d53ec..f5b61f90bf 100644 --- a/tests/compiler/bindings/raw.release.d.ts +++ b/tests/compiler/bindings/raw.release.d.ts @@ -1,4 +1,6 @@ declare namespace __AdaptedExports { + /** Exported memory */ + export const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export const plainGlobal: { /** @type `i32` */ From c44033a5f51af48293e883988b2e13f6c1be1cac Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 27 Jun 2022 22:24:53 +0300 Subject: [PATCH 9/9] better --- src/bindings/tsd.ts | 4 ++-- tests/compiler/bindings/raw.debug.d.ts | 2 +- tests/compiler/bindings/raw.release.d.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bindings/tsd.ts b/src/bindings/tsd.ts index c1628cda14..6eafb57908 100644 --- a/src/bindings/tsd.ts +++ b/src/bindings/tsd.ts @@ -190,13 +190,13 @@ export class TSDBuilder extends ExportsWalker { indent(sb, this.indentLevel); sb.push("/** Exported memory */\n"); indent(sb, this.indentLevel); - sb.push(`export ${this.esm ? "declare" : ""} const memory: WebAssembly.Memory;\n`); + sb.push(`export ${this.esm ? "declare " : ""}const memory: WebAssembly.Memory;\n`); } if (this.program.options.exportTable) { indent(sb, this.indentLevel); sb.push("/** Exported table */\n"); indent(sb, this.indentLevel); - sb.push(`export ${this.esm ? "declare" : ""} const table: WebAssembly.Table;\n`); + sb.push(`export ${this.esm ? "declare " : ""}const table: WebAssembly.Table;\n`); } this.walk(); if (!this.esm) { diff --git a/tests/compiler/bindings/raw.debug.d.ts b/tests/compiler/bindings/raw.debug.d.ts index f5b61f90bf..5ad9b47785 100644 --- a/tests/compiler/bindings/raw.debug.d.ts +++ b/tests/compiler/bindings/raw.debug.d.ts @@ -1,6 +1,6 @@ declare namespace __AdaptedExports { /** Exported memory */ - export const memory: WebAssembly.Memory; + export const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export const plainGlobal: { /** @type `i32` */ diff --git a/tests/compiler/bindings/raw.release.d.ts b/tests/compiler/bindings/raw.release.d.ts index f5b61f90bf..5ad9b47785 100644 --- a/tests/compiler/bindings/raw.release.d.ts +++ b/tests/compiler/bindings/raw.release.d.ts @@ -1,6 +1,6 @@ declare namespace __AdaptedExports { /** Exported memory */ - export const memory: WebAssembly.Memory; + export const memory: WebAssembly.Memory; /** bindings/esm/plainGlobal */ export const plainGlobal: { /** @type `i32` */