Skip to content

Commit e97c476

Browse files
committed
PR feedback
1 parent 3c5c873 commit e97c476

File tree

3 files changed

+16
-25
lines changed

3 files changed

+16
-25
lines changed

src/build.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ async function emitDom() {
304304
compilerBehavior: {
305305
useIteratorObject: true,
306306
allowUnrelatedSetterType: true,
307-
genericTypedArrays: true,
307+
useGenericTypedArrays: true,
308308
},
309309
},
310310
// ts5.6

src/build/emitter.ts

+8-20
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
integerTypes,
1010
baseTypeConversionMap,
1111
assertUnique,
12+
arrayBufferViewTypes,
1213
} from "./helpers.js";
1314
import { collectLegacyNamespaceTypes } from "./legacy-namespace.js";
1415

@@ -135,7 +136,7 @@ function isEventHandler(p: Browser.Property) {
135136
export interface CompilerBehavior {
136137
useIteratorObject?: boolean;
137138
allowUnrelatedSetterType?: boolean;
138-
genericTypedArrays?: boolean;
139+
useGenericTypedArrays?: boolean;
139140
}
140141

141142
export function emitWebIdl(
@@ -390,7 +391,9 @@ export function emitWebIdl(
390391

391392
// propagate `any`
392393
const converted = types.map(convertDomTypeToTsTypeWorker);
393-
if (converted.includes("any")) return "any";
394+
if (converted.includes("any")) {
395+
return "any";
396+
}
394397

395398
// convert `ArrayBuffer | SharedArrayBuffer` into `ArrayBufferLike` to be pre-ES2017 friendly.
396399
const arrayBufferIndex = converted.indexOf("ArrayBuffer");
@@ -412,24 +415,9 @@ export function emitWebIdl(
412415
.map(convertDomTypeToTsType)
413416
.join(", ");
414417

415-
if (!subtypeString && compilerBehavior.genericTypedArrays) {
416-
switch (type) {
417-
case "ArrayBufferView":
418-
case "DataView":
419-
case "Int8Array":
420-
case "Uint8Array":
421-
case "Uint8ClampedArray":
422-
case "Int16Array":
423-
case "Uint16Array":
424-
case "Int32Array":
425-
case "Uint32Array":
426-
case "Float32Array":
427-
case "Float64Array":
428-
case "BigInt64Array":
429-
case "BigUint64Array":
430-
case "Float16Array":
431-
subtypeString = obj.allowShared ? "ArrayBufferLike" : "ArrayBuffer";
432-
break;
418+
if (!subtypeString && compilerBehavior.useGenericTypedArrays) {
419+
if (arrayBufferViewTypes.has(type)) {
420+
subtypeString = obj.allowShared ? "ArrayBufferLike" : "ArrayBuffer";
433421
}
434422
}
435423

src/build/helpers.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import * as Browser from "./types.js";
22

33
// Extended types used but not defined in the spec
4-
export const bufferSourceTypes = new Set([
5-
"ArrayBuffer",
6-
"SharedArrayBuffer",
7-
"ArrayBufferLike",
4+
export const arrayBufferViewTypes = new Set([
85
"ArrayBufferView",
96
"DataView",
107
"Int8Array",
@@ -17,6 +14,11 @@ export const bufferSourceTypes = new Set([
1714
"Float32Array",
1815
"Float64Array",
1916
]);
17+
export const bufferSourceTypes = new Set([
18+
"ArrayBuffer",
19+
"SharedArrayBuffer",
20+
...arrayBufferViewTypes,
21+
]);
2022
export const integerTypes = new Set([
2123
"byte",
2224
"octet",
@@ -68,6 +70,7 @@ export const baseTypeConversionMap = new Map<string, string>([
6870
["record", "Record"],
6971
["FrozenArray", "ReadonlyArray"],
7072
["EventHandler", "EventHandler"],
73+
["ArrayBufferLike", "ArrayBufferLike"],
7174
]);
7275

7376
export function deepFilter<T>(

0 commit comments

Comments
 (0)