diff --git a/tests/baselines/reference/instantiateContextualTypes.js b/tests/baselines/reference/instantiateContextualTypes.js index 9de6bfb612..46d87cb115 100644 --- a/tests/baselines/reference/instantiateContextualTypes.js +++ b/tests/baselines/reference/instantiateContextualTypes.js @@ -172,6 +172,16 @@ class Interesting { declare function invoke(f: () => T): T; let xx: 0 | 1 | 2 = invoke(() => 1); + +// Repro from #32416 + +declare function assignPartial(target: T, partial: Partial): T; + +let obj = { + foo(bar: string) {} +} + +assignPartial(obj, { foo(...args) {} }); // args has type [string] //// [instantiateContextualTypes.js] @@ -222,3 +232,7 @@ class Interesting { } } let xx = invoke(() => 1); +let obj = { + foo(bar) { } +}; +assignPartial(obj, { foo(...args) { } }); // args has type [string] diff --git a/tests/baselines/reference/instantiateContextualTypes.symbols b/tests/baselines/reference/instantiateContextualTypes.symbols index 1250edd585..d3e8a7a317 100644 --- a/tests/baselines/reference/instantiateContextualTypes.symbols +++ b/tests/baselines/reference/instantiateContextualTypes.symbols @@ -481,3 +481,29 @@ let xx: 0 | 1 | 2 = invoke(() => 1); >xx : Symbol(xx, Decl(instantiateContextualTypes.ts, 172, 3)) >invoke : Symbol(invoke, Decl(instantiateContextualTypes.ts, 166, 1)) +// Repro from #32416 + +declare function assignPartial(target: T, partial: Partial): T; +>assignPartial : Symbol(assignPartial, Decl(instantiateContextualTypes.ts, 172, 36)) +>T : Symbol(T, Decl(instantiateContextualTypes.ts, 176, 31)) +>target : Symbol(target, Decl(instantiateContextualTypes.ts, 176, 34)) +>T : Symbol(T, Decl(instantiateContextualTypes.ts, 176, 31)) +>partial : Symbol(partial, Decl(instantiateContextualTypes.ts, 176, 44)) +>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(instantiateContextualTypes.ts, 176, 31)) +>T : Symbol(T, Decl(instantiateContextualTypes.ts, 176, 31)) + +let obj = { +>obj : Symbol(obj, Decl(instantiateContextualTypes.ts, 178, 3)) + + foo(bar: string) {} +>foo : Symbol(foo, Decl(instantiateContextualTypes.ts, 178, 11)) +>bar : Symbol(bar, Decl(instantiateContextualTypes.ts, 179, 6)) +} + +assignPartial(obj, { foo(...args) {} }); // args has type [string] +>assignPartial : Symbol(assignPartial, Decl(instantiateContextualTypes.ts, 172, 36)) +>obj : Symbol(obj, Decl(instantiateContextualTypes.ts, 178, 3)) +>foo : Symbol(foo, Decl(instantiateContextualTypes.ts, 182, 20)) +>args : Symbol(args, Decl(instantiateContextualTypes.ts, 182, 25)) + diff --git a/tests/baselines/reference/instantiateContextualTypes.types b/tests/baselines/reference/instantiateContextualTypes.types index 88e6ca7e4d..b5317b6f75 100644 --- a/tests/baselines/reference/instantiateContextualTypes.types +++ b/tests/baselines/reference/instantiateContextualTypes.types @@ -422,3 +422,27 @@ let xx: 0 | 1 | 2 = invoke(() => 1); >() => 1 : () => 1 >1 : 1 +// Repro from #32416 + +declare function assignPartial(target: T, partial: Partial): T; +>assignPartial : (target: T, partial: Partial) => T +>target : T +>partial : Partial + +let obj = { +>obj : { foo(bar: string): void; } +>{ foo(bar: string) {}} : { foo(bar: string): void; } + + foo(bar: string) {} +>foo : (bar: string) => void +>bar : string +} + +assignPartial(obj, { foo(...args) {} }); // args has type [string] +>assignPartial(obj, { foo(...args) {} }) : { foo(bar: string): void; } +>assignPartial : (target: T, partial: Partial) => T +>obj : { foo(bar: string): void; } +>{ foo(...args) {} } : { foo(bar: string): void; } +>foo : (bar: string) => void +>args : [string] +