From 1b91d78976f299d57fffedd0c1248b57fbb522de Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 2 May 2025 01:27:56 +0200 Subject: [PATCH] Emit Iterable only for non-return array types --- baselines/dom.iterable.generated.d.ts | 2 +- .../serviceworker.iterable.generated.d.ts | 2 +- .../sharedworker.iterable.generated.d.ts | 2 +- baselines/ts5.5/dom.iterable.generated.d.ts | 2 +- .../serviceworker.iterable.generated.d.ts | 2 +- .../sharedworker.iterable.generated.d.ts | 2 +- .../ts5.5/webworker.iterable.generated.d.ts | 2 +- baselines/ts5.6/dom.iterable.generated.d.ts | 2 +- .../serviceworker.iterable.generated.d.ts | 2 +- .../sharedworker.iterable.generated.d.ts | 2 +- .../ts5.6/webworker.iterable.generated.d.ts | 2 +- baselines/webworker.iterable.generated.d.ts | 2 +- src/build/emitter.ts | 31 +++++++++++++------ 13 files changed, 34 insertions(+), 21 deletions(-) diff --git a/baselines/dom.iterable.generated.d.ts b/baselines/dom.iterable.generated.d.ts index ae9011700..84ad74f92 100644 --- a/baselines/dom.iterable.generated.d.ts +++ b/baselines/dom.iterable.generated.d.ts @@ -380,7 +380,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/serviceworker.iterable.generated.d.ts b/baselines/serviceworker.iterable.generated.d.ts index 58e8c2bc2..324c382fb 100644 --- a/baselines/serviceworker.iterable.generated.d.ts +++ b/baselines/serviceworker.iterable.generated.d.ts @@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/sharedworker.iterable.generated.d.ts b/baselines/sharedworker.iterable.generated.d.ts index e8a993407..ed7e67c62 100644 --- a/baselines/sharedworker.iterable.generated.d.ts +++ b/baselines/sharedworker.iterable.generated.d.ts @@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.5/dom.iterable.generated.d.ts b/baselines/ts5.5/dom.iterable.generated.d.ts index 2ce43c92d..33454c105 100644 --- a/baselines/ts5.5/dom.iterable.generated.d.ts +++ b/baselines/ts5.5/dom.iterable.generated.d.ts @@ -360,7 +360,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.5/serviceworker.iterable.generated.d.ts b/baselines/ts5.5/serviceworker.iterable.generated.d.ts index b5e00d36c..ad62c86c6 100644 --- a/baselines/ts5.5/serviceworker.iterable.generated.d.ts +++ b/baselines/ts5.5/serviceworker.iterable.generated.d.ts @@ -154,7 +154,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.5/sharedworker.iterable.generated.d.ts b/baselines/ts5.5/sharedworker.iterable.generated.d.ts index 5daa61439..f1591efc8 100644 --- a/baselines/ts5.5/sharedworker.iterable.generated.d.ts +++ b/baselines/ts5.5/sharedworker.iterable.generated.d.ts @@ -154,7 +154,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.5/webworker.iterable.generated.d.ts b/baselines/ts5.5/webworker.iterable.generated.d.ts index d127f443a..e52e320e4 100644 --- a/baselines/ts5.5/webworker.iterable.generated.d.ts +++ b/baselines/ts5.5/webworker.iterable.generated.d.ts @@ -158,7 +158,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.6/dom.iterable.generated.d.ts b/baselines/ts5.6/dom.iterable.generated.d.ts index e6ececec6..2c180361b 100644 --- a/baselines/ts5.6/dom.iterable.generated.d.ts +++ b/baselines/ts5.6/dom.iterable.generated.d.ts @@ -380,7 +380,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.6/serviceworker.iterable.generated.d.ts b/baselines/ts5.6/serviceworker.iterable.generated.d.ts index fbcbee7e8..0d10ad532 100644 --- a/baselines/ts5.6/serviceworker.iterable.generated.d.ts +++ b/baselines/ts5.6/serviceworker.iterable.generated.d.ts @@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.6/sharedworker.iterable.generated.d.ts b/baselines/ts5.6/sharedworker.iterable.generated.d.ts index 5d59c7a23..83cc353cc 100644 --- a/baselines/ts5.6/sharedworker.iterable.generated.d.ts +++ b/baselines/ts5.6/sharedworker.iterable.generated.d.ts @@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/ts5.6/webworker.iterable.generated.d.ts b/baselines/ts5.6/webworker.iterable.generated.d.ts index c1d5927e0..a548df273 100644 --- a/baselines/ts5.6/webworker.iterable.generated.d.ts +++ b/baselines/ts5.6/webworker.iterable.generated.d.ts @@ -174,7 +174,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/baselines/webworker.iterable.generated.d.ts b/baselines/webworker.iterable.generated.d.ts index a78dffd4d..7c7ae3040 100644 --- a/baselines/webworker.iterable.generated.d.ts +++ b/baselines/webworker.iterable.generated.d.ts @@ -174,7 +174,7 @@ interface WebGL2RenderingContextBase { /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */ getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */ - getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null; + getUniformIndices(program: WebGLProgram, uniformNames: Iterable): GLuint[] | null; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */ invalidateFramebuffer(target: GLenum, attachments: Iterable): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */ diff --git a/src/build/emitter.ts b/src/build/emitter.ts index 16ae942b5..b6e84c3ea 100644 --- a/src/build/emitter.ts +++ b/src/build/emitter.ts @@ -354,21 +354,28 @@ export function emitWebIdl( } /// Get typescript type using object dom type, object name, and it's associated interface name - function convertDomTypeToTsType(obj: Browser.Typed): string { + function convertDomTypeToTsTypeBase( + obj: Browser.Typed, + forReturn: boolean, + ): string { if (obj.overrideType) { return obj.nullable ? makeNullable(obj.overrideType) : obj.overrideType; } if (!obj.type) throw new Error("Missing 'type' field in " + JSON.stringify(obj)); - let type = convertDomTypeToTsTypeWorker(obj); + let type = convertDomTypeToTsTypeWorker(obj, forReturn); if (type === "Promise") { type = "Promise"; } return obj.nullable ? makeNullable(type) : type; } + function convertDomTypeToTsType(obj: Browser.Typed) { + return convertDomTypeToTsTypeBase(obj, false); + } + function convertDomTypeToTsReturnType(obj: Browser.Typed): string { - const type = convertDomTypeToTsType(obj); + const type = convertDomTypeToTsTypeBase(obj, true); if (type === "undefined") { return "void"; } @@ -378,8 +385,15 @@ export function emitWebIdl( return type; } - function convertDomTypeToTsTypeWorker(obj: Browser.Typed): string { + function convertDomTypeToTsTypeWorker( + obj: Browser.Typed, + forReturn: boolean, + ): string { function convertBaseType() { + if (obj.type === "sequence" && !forReturn && iterator !== "") { + return "Iterable"; + } + if (!obj.additionalTypes && typeof obj.type === "string") { return convertDomTypeToTsTypeSimple(obj.type); } else { @@ -390,7 +404,9 @@ export function emitWebIdl( types.push(...(obj.additionalTypes ?? []).map((t) => ({ type: t }))); // propagate `any` - const converted = types.map(convertDomTypeToTsTypeWorker); + const converted = types.map((t) => + convertDomTypeToTsTypeWorker(t, forReturn), + ); if (converted.includes("any")) { return "any"; } @@ -412,7 +428,7 @@ export function emitWebIdl( const type = convertBaseType(); let subtypeString = arrayify(obj.subtype) - .map(convertDomTypeToTsType) + .map((t) => convertDomTypeToTsTypeBase(t, forReturn)) .join(", "); if ( @@ -453,9 +469,6 @@ export function emitWebIdl( } function convertDomTypeToTsTypeSimple(objDomType: string): string { - if (objDomType === "sequence" && iterator !== "") { - return "Iterable"; - } if (baseTypeConversionMap.has(objDomType)) { return baseTypeConversionMap.get(objDomType)!; }