From 4c0067c9ee0143b1629288f971fc55a0e1999424 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 02:33:02 +0000 Subject: [PATCH 1/2] Initial plan From f7af25026d00dc2afc660beeb3981568bfffd421 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 02:49:04 +0000 Subject: [PATCH 2/2] Fix MIDIMessageEvent.data incorrectly typed as nullable Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@users.noreply.github.com> --- tsc/internal/bundled/libs/lib.dom.d.ts | 2 +- .../midiMessageEventDataNotNullable.js | 17 +++++++++++++ .../midiMessageEventDataNotNullable.symbols | 21 ++++++++++++++++ .../midiMessageEventDataNotNullable.types | 24 +++++++++++++++++++ tsc/testdata/fixtures/lib/dom.generated.d.ts | 2 +- .../midiMessageEventDataNotNullable.ts | 9 +++++++ 6 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.js create mode 100644 tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.symbols create mode 100644 tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.types create mode 100644 tsc/testdata/tests/cases/compiler/midiMessageEventDataNotNullable.ts diff --git a/tsc/internal/bundled/libs/lib.dom.d.ts b/tsc/internal/bundled/libs/lib.dom.d.ts index 9e127c3f5a524..67374324d3886 100644 --- a/tsc/internal/bundled/libs/lib.dom.d.ts +++ b/tsc/internal/bundled/libs/lib.dom.d.ts @@ -23616,7 +23616,7 @@ interface MIDIMessageEvent extends Event { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data) */ - readonly data: Uint8Array | null; + readonly data: Uint8Array; } declare var MIDIMessageEvent: { diff --git a/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.js b/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.js new file mode 100644 index 0000000000000..1141d43b29b5b --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/midiMessageEventDataNotNullable.ts] //// + +//// [midiMessageEventDataNotNullable.ts] +declare const input: MIDIInput; + +input.onmidimessage = (event) => { + // `data` should not be nullable, so this should not error. + event.data[0]; +}; + + +//// [midiMessageEventDataNotNullable.js] +"use strict"; +input.onmidimessage = (event) => { + // `data` should not be nullable, so this should not error. + event.data[0]; +}; diff --git a/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.symbols b/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.symbols new file mode 100644 index 0000000000000..d664677819caf --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.symbols @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/midiMessageEventDataNotNullable.ts] //// + +=== midiMessageEventDataNotNullable.ts === +declare const input: MIDIInput; +>input : Symbol(input, Decl(midiMessageEventDataNotNullable.ts, 0, 13)) +>MIDIInput : Symbol(MIDIInput, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) + +input.onmidimessage = (event) => { +>input.onmidimessage : Symbol(MIDIInput.onmidimessage, Decl(lib.dom.d.ts, --, --)) +>input : Symbol(input, Decl(midiMessageEventDataNotNullable.ts, 0, 13)) +>onmidimessage : Symbol(MIDIInput.onmidimessage, Decl(lib.dom.d.ts, --, --)) +>event : Symbol(event, Decl(midiMessageEventDataNotNullable.ts, 2, 23)) + + // `data` should not be nullable, so this should not error. + event.data[0]; +>event.data : Symbol(MIDIMessageEvent.data, Decl(lib.dom.d.ts, --, --)) +>event : Symbol(event, Decl(midiMessageEventDataNotNullable.ts, 2, 23)) +>data : Symbol(MIDIMessageEvent.data, Decl(lib.dom.d.ts, --, --)) + +}; + diff --git a/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.types b/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.types new file mode 100644 index 0000000000000..2852561ed1454 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/midiMessageEventDataNotNullable.types @@ -0,0 +1,24 @@ +//// [tests/cases/compiler/midiMessageEventDataNotNullable.ts] //// + +=== midiMessageEventDataNotNullable.ts === +declare const input: MIDIInput; +>input : MIDIInput + +input.onmidimessage = (event) => { +>input.onmidimessage = (event) => { // `data` should not be nullable, so this should not error. event.data[0];} : (this: MIDIInput, event: MIDIMessageEvent) => void +>input.onmidimessage : ((this: MIDIInput, ev: MIDIMessageEvent) => any) | null +>input : MIDIInput +>onmidimessage : ((this: MIDIInput, ev: MIDIMessageEvent) => any) | null +>(event) => { // `data` should not be nullable, so this should not error. event.data[0];} : (this: MIDIInput, event: MIDIMessageEvent) => void +>event : MIDIMessageEvent + + // `data` should not be nullable, so this should not error. + event.data[0]; +>event.data[0] : number +>event.data : Uint8Array +>event : MIDIMessageEvent +>data : Uint8Array +>0 : 0 + +}; + diff --git a/tsc/testdata/fixtures/lib/dom.generated.d.ts b/tsc/testdata/fixtures/lib/dom.generated.d.ts index d667879250cf4..ee99317bf27a5 100644 --- a/tsc/testdata/fixtures/lib/dom.generated.d.ts +++ b/tsc/testdata/fixtures/lib/dom.generated.d.ts @@ -23600,7 +23600,7 @@ interface MIDIMessageEvent extends Event { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data) */ - readonly data: Uint8Array | null; + readonly data: Uint8Array; } declare var MIDIMessageEvent: { diff --git a/tsc/testdata/tests/cases/compiler/midiMessageEventDataNotNullable.ts b/tsc/testdata/tests/cases/compiler/midiMessageEventDataNotNullable.ts new file mode 100644 index 0000000000000..a7d9bfe601b50 --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/midiMessageEventDataNotNullable.ts @@ -0,0 +1,9 @@ +// @strict: true +// @lib: dom,es2015 + +declare const input: MIDIInput; + +input.onmidimessage = (event) => { + // `data` should not be nullable, so this should not error. + event.data[0]; +};