Skip to content

Commit 9ede0cb

Browse files
authored
Emit Iterable only for non-return array types (microsoft#2012)
Co-authored-by: saschanaz <[email protected]>
1 parent 56c6ca4 commit 9ede0cb

13 files changed

+34
-21
lines changed

baselines/dom.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ interface WebGL2RenderingContextBase {
380380
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
381381
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
382382
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
383-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
383+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
384384
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
385385
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
386386
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/serviceworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase {
170170
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
171171
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
172172
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
173-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
173+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
174174
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
175175
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
176176
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/sharedworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase {
170170
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
171171
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
172172
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
173-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
173+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
174174
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
175175
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
176176
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.5/dom.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ interface WebGL2RenderingContextBase {
360360
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
361361
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
362362
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
363-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
363+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
364364
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
365365
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
366366
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.5/serviceworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ interface WebGL2RenderingContextBase {
154154
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
155155
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
156156
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
157-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
157+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
158158
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
159159
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
160160
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.5/sharedworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ interface WebGL2RenderingContextBase {
154154
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
155155
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
156156
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
157-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
157+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
158158
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
159159
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
160160
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.5/webworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ interface WebGL2RenderingContextBase {
158158
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
159159
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
160160
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
161-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
161+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
162162
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
163163
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
164164
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.6/dom.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ interface WebGL2RenderingContextBase {
380380
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
381381
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
382382
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
383-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
383+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
384384
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
385385
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
386386
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.6/serviceworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase {
170170
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
171171
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
172172
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
173-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
173+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
174174
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
175175
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
176176
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.6/sharedworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ interface WebGL2RenderingContextBase {
170170
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
171171
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
172172
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
173-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
173+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
174174
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
175175
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
176176
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/ts5.6/webworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ interface WebGL2RenderingContextBase {
174174
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
175175
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
176176
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
177-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
177+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
178178
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
179179
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
180180
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

baselines/webworker.iterable.generated.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ interface WebGL2RenderingContextBase {
174174
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms) */
175175
getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;
176176
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices) */
177-
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;
177+
getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): GLuint[] | null;
178178
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer) */
179179
invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;
180180
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer) */

src/build/emitter.ts

+22-9
Original file line numberDiff line numberDiff line change
@@ -354,21 +354,28 @@ export function emitWebIdl(
354354
}
355355

356356
/// Get typescript type using object dom type, object name, and it's associated interface name
357-
function convertDomTypeToTsType(obj: Browser.Typed): string {
357+
function convertDomTypeToTsTypeBase(
358+
obj: Browser.Typed,
359+
forReturn: boolean,
360+
): string {
358361
if (obj.overrideType) {
359362
return obj.nullable ? makeNullable(obj.overrideType) : obj.overrideType;
360363
}
361364
if (!obj.type)
362365
throw new Error("Missing 'type' field in " + JSON.stringify(obj));
363-
let type = convertDomTypeToTsTypeWorker(obj);
366+
let type = convertDomTypeToTsTypeWorker(obj, forReturn);
364367
if (type === "Promise<undefined>") {
365368
type = "Promise<void>";
366369
}
367370
return obj.nullable ? makeNullable(type) : type;
368371
}
369372

373+
function convertDomTypeToTsType(obj: Browser.Typed) {
374+
return convertDomTypeToTsTypeBase(obj, false);
375+
}
376+
370377
function convertDomTypeToTsReturnType(obj: Browser.Typed): string {
371-
const type = convertDomTypeToTsType(obj);
378+
const type = convertDomTypeToTsTypeBase(obj, true);
372379
if (type === "undefined") {
373380
return "void";
374381
}
@@ -378,8 +385,15 @@ export function emitWebIdl(
378385
return type;
379386
}
380387

381-
function convertDomTypeToTsTypeWorker(obj: Browser.Typed): string {
388+
function convertDomTypeToTsTypeWorker(
389+
obj: Browser.Typed,
390+
forReturn: boolean,
391+
): string {
382392
function convertBaseType() {
393+
if (obj.type === "sequence" && !forReturn && iterator !== "") {
394+
return "Iterable";
395+
}
396+
383397
if (!obj.additionalTypes && typeof obj.type === "string") {
384398
return convertDomTypeToTsTypeSimple(obj.type);
385399
} else {
@@ -390,7 +404,9 @@ export function emitWebIdl(
390404
types.push(...(obj.additionalTypes ?? []).map((t) => ({ type: t })));
391405

392406
// propagate `any`
393-
const converted = types.map(convertDomTypeToTsTypeWorker);
407+
const converted = types.map((t) =>
408+
convertDomTypeToTsTypeWorker(t, forReturn),
409+
);
394410
if (converted.includes("any")) {
395411
return "any";
396412
}
@@ -412,7 +428,7 @@ export function emitWebIdl(
412428

413429
const type = convertBaseType();
414430
let subtypeString = arrayify(obj.subtype)
415-
.map(convertDomTypeToTsType)
431+
.map((t) => convertDomTypeToTsTypeBase(t, forReturn))
416432
.join(", ");
417433

418434
if (
@@ -453,9 +469,6 @@ export function emitWebIdl(
453469
}
454470

455471
function convertDomTypeToTsTypeSimple(objDomType: string): string {
456-
if (objDomType === "sequence" && iterator !== "") {
457-
return "Iterable";
458-
}
459472
if (baseTypeConversionMap.has(objDomType)) {
460473
return baseTypeConversionMap.get(objDomType)!;
461474
}

0 commit comments

Comments
 (0)