Skip to content

Commit 2dbc80d

Browse files
authored
Override MessageEventTarget's this parameters (microsoft#1894)
This is needed after all. I incorrectly reverted it in my previous PR.
1 parent d112b8d commit 2dbc80d

13 files changed

+43
-40
lines changed

Diff for: baselines/audioworklet.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -684,12 +684,12 @@ interface MessageEventTargetEventMap {
684684

685685
interface MessageEventTarget<T> {
686686
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
687-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
687+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
688688
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
689-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
690-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
689+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
690+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
691691
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
692-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
692+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
693693
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
694694
}
695695

Diff for: baselines/dom.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -16412,12 +16412,12 @@ interface MessageEventTargetEventMap {
1641216412

1641316413
interface MessageEventTarget<T> {
1641416414
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
16415-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
16415+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
1641616416
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
16417-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
16418-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16417+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
16418+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1641916419
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16420-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16420+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1642116421
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1642216422
}
1642316423

Diff for: baselines/serviceworker.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -3763,12 +3763,12 @@ interface MessageEventTargetEventMap {
37633763

37643764
interface MessageEventTarget<T> {
37653765
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
3766-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3766+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
37673767
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
3768-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3769-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3768+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
3769+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
37703770
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3771-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3771+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
37723772
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
37733773
}
37743774

Diff for: baselines/sharedworker.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -3652,12 +3652,12 @@ interface MessageEventTargetEventMap {
36523652

36533653
interface MessageEventTarget<T> {
36543654
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
3655-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3655+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
36563656
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
3657-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3658-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3657+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
3658+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
36593659
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3660-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3660+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
36613661
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
36623662
}
36633663

Diff for: baselines/ts5.5/audioworklet.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -684,12 +684,12 @@ interface MessageEventTargetEventMap {
684684

685685
interface MessageEventTarget<T> {
686686
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
687-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
687+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
688688
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
689-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
690-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
689+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
690+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
691691
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
692-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
692+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
693693
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
694694
}
695695

Diff for: baselines/ts5.5/dom.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -16392,12 +16392,12 @@ interface MessageEventTargetEventMap {
1639216392

1639316393
interface MessageEventTarget<T> {
1639416394
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
16395-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
16395+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
1639616396
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
16397-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
16398-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
16397+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
16398+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1639916399
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
16400-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
16400+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1640116401
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1640216402
}
1640316403

Diff for: baselines/ts5.5/serviceworker.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -3763,12 +3763,12 @@ interface MessageEventTargetEventMap {
37633763

37643764
interface MessageEventTarget<T> {
37653765
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
3766-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3766+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
37673767
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
3768-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3769-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3768+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
3769+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
37703770
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3771-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3771+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
37723772
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
37733773
}
37743774

Diff for: baselines/ts5.5/sharedworker.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -3652,12 +3652,12 @@ interface MessageEventTargetEventMap {
36523652

36533653
interface MessageEventTarget<T> {
36543654
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
3655-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3655+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
36563656
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
3657-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
3658-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3657+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
3658+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
36593659
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3660-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3660+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
36613661
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
36623662
}
36633663

Diff for: baselines/ts5.5/webworker.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -4337,12 +4337,12 @@ interface MessageEventTargetEventMap {
43374337

43384338
interface MessageEventTarget<T> {
43394339
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
4340-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
4340+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
43414341
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
4342-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
4343-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4342+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
4343+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
43444344
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4345-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4345+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
43464346
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
43474347
}
43484348

Diff for: baselines/webworker.generated.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -4337,12 +4337,12 @@ interface MessageEventTargetEventMap {
43374337

43384338
interface MessageEventTarget<T> {
43394339
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/message_event) */
4340-
onmessage: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
4340+
onmessage: ((this: T, ev: MessageEvent) => any) | null;
43414341
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/messageerror_event) */
4342-
onmessageerror: ((this: MessageEventTarget<T>, ev: MessageEvent) => any) | null;
4343-
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4342+
onmessageerror: ((this: T, ev: MessageEvent) => any) | null;
4343+
addEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
43444344
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4345-
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: MessageEventTarget<T>, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4345+
removeEventListener<K extends keyof MessageEventTargetEventMap>(type: K, listener: (this: T, ev: MessageEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
43464346
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
43474347
}
43484348

Diff for: inputfiles/overridingTypes.jsonc

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"name": "T"
88
}
99
],
10+
"overrideThis": "T",
1011
"events": {
1112
"event": [
1213
{

Diff for: src/build/emitter.ts

+1
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,7 @@ export function emitWebIdl(
465465
function nameWithForwardedTypes(i: Browser.Interface) {
466466
const typeParameters = i.typeParameters;
467467

468+
if (i.overrideThis) return i.overrideThis;
468469
if (!typeParameters) return i.name;
469470
if (!typeParameters.length) return i.name;
470471

Diff for: src/build/types.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ export interface Interface {
181181
overrideExposed?: string;
182182
tags?: string;
183183
"implicit-this"?: 1;
184+
overrideThis?: string;
184185
noInterfaceObject?: boolean;
185186
global?: string;
186187
typeParameters?: TypeParameter[];

0 commit comments

Comments
 (0)