diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 1c75c7380..8fb999b5d 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -1028,8 +1028,8 @@ interface PeriodicWaveConstraints { } interface PeriodicWaveOptions extends PeriodicWaveConstraints { - imag?: number[]; - real?: number[]; + imag?: Float32Array; + real?: Float32Array; } interface PointerEventInit extends MouseEventInit { @@ -1540,8 +1540,8 @@ interface VRDisplayEventInit extends EventInit { } interface VRLayer { - leftBounds?: number[] | null; - rightBounds?: number[] | null; + leftBounds?: Float32Array | null; + rightBounds?: Float32Array | null; source?: HTMLCanvasElement | null; } @@ -1552,7 +1552,7 @@ interface VRStageParameters { } interface WaveShaperOptions extends AudioNodeOptions { - curve?: number[]; + curve?: Float32Array; oversample?: OverSampleType; } @@ -1955,7 +1955,7 @@ interface AudioParam { linearRampToValueAtTime(value: number, endTime: number): AudioParam; setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam; setValueAtTime(value: number, startTime: number): AudioParam; - setValueCurveAtTime(values: number[], startTime: number, duration: number): AudioParam; + setValueCurveAtTime(values: Float32Array, startTime: number, duration: number): AudioParam; } declare var AudioParam: { diff --git a/src/emitter.ts b/src/emitter.ts index 65e83d808..31a20c8d3 100644 --- a/src/emitter.ts +++ b/src/emitter.ts @@ -296,12 +296,16 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) { const subtypeString = subtype ? subtype.nullable ? makeNullable(subtype.name) : subtype.name : undefined; return { - name: (type.name === "Array" && subtypeString) ? makeArrayType(subtypeString) : `${type.name}${subtypeString ? `<${subtypeString}>` : ""}`, + name: (type.name === "Array" && subtypeString) ? makeArrayType(subtypeString, obj) : `${type.name}${subtypeString ? `<${subtypeString}>` : ""}`, nullable: type.nullable }; } - function makeArrayType(elementType: string): string { + function makeArrayType (elementType: string, obj: Browser.Typed): string { + if (obj.subtype && obj.subtype.type === "float") { + return "Float32Array"; + } + return elementType.includes("|") ? `(${elementType})[]` : `${elementType}[]`; }