mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 12:51:30 -05:00
Merge pull request #18392 from Microsoft/fix-contextually-typing-arguments-object
Fix contextually typing arguments object
This commit is contained in:
@@ -16703,8 +16703,9 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
if (signature.hasRestParameter && isRestParameterIndex(context, signature.parameters.length - 1)) {
|
||||
// parameter might be a transient symbol generated by use of `arguments` in the function body.
|
||||
const parameter = lastOrUndefined(signature.parameters);
|
||||
if (!getEffectiveTypeAnnotationNode(<ParameterDeclaration>parameter.valueDeclaration)) {
|
||||
if (isTransientSymbol(parameter) || !getEffectiveTypeAnnotationNode(<ParameterDeclaration>parameter.valueDeclaration)) {
|
||||
const contextualParameterType = getTypeOfSymbol(lastOrUndefined(context.parameters));
|
||||
assignTypeToParameterAndFixTypeParameters(parameter, contextualParameterType);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
=== tests/cases/compiler/foo.js ===
|
||||
// Repro for #16585
|
||||
const x = {
|
||||
>x : Symbol(x, Decl(foo.js, 1, 5))
|
||||
|
||||
bar() {
|
||||
>bar : Symbol(bar, Decl(foo.js, 1, 11))
|
||||
|
||||
setTimeout(function() { arguments }, 0);
|
||||
>setTimeout : Symbol(setTimeout, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
|
||||
>arguments : Symbol(arguments)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
=== tests/cases/compiler/foo.js ===
|
||||
// Repro for #16585
|
||||
const x = {
|
||||
>x : { [x: string]: any; bar(): void; }
|
||||
>{ bar() { setTimeout(function() { arguments }, 0); }} : { [x: string]: any; bar(): void; }
|
||||
|
||||
bar() {
|
||||
>bar : () => void
|
||||
|
||||
setTimeout(function() { arguments }, 0);
|
||||
>setTimeout(function() { arguments }, 0) : number
|
||||
>setTimeout : { (handler: (...args: any[]) => void, timeout: number): number; (handler: any, timeout?: any, ...args: any[]): number; }
|
||||
>function() { arguments } : (...args: any[]) => void
|
||||
>arguments : IArguments
|
||||
>0 : 0
|
||||
}
|
||||
}
|
||||
|
||||
11
tests/cases/compiler/contextuallyTypeArgumentsKeyword.ts
Normal file
11
tests/cases/compiler/contextuallyTypeArgumentsKeyword.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
// @noEmit: true
|
||||
// @allowJs: true
|
||||
// @checkJs: true
|
||||
// @lib: es2017, dom
|
||||
// @Filename: foo.js
|
||||
// Repro for #16585
|
||||
const x = {
|
||||
bar() {
|
||||
setTimeout(function() { arguments }, 0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user