From 4b08c0582d1b672cffc8478602ba4de65ff06550 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Wed, 6 May 2020 12:04:28 -0700 Subject: [PATCH] Fix regression in name resolution in parameter (#38351) --- src/compiler/checker.ts | 4 +++- .../parameterInitializersBackwardReferencing.ts | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 tests/cases/conformance/functions/parameterInitializersBackwardReferencing.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 474100799b9..529c5c1884e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1889,7 +1889,9 @@ namespace ts { lastLocation === (location as BindingElement).name && isBindingPattern(lastLocation))) { const root = getRootDeclaration(location); if (root.kind === SyntaxKind.Parameter) { - associatedDeclarationForContainingInitializerOrBindingName = location as BindingElement; + if (!associatedDeclarationForContainingInitializerOrBindingName) { + associatedDeclarationForContainingInitializerOrBindingName = location as BindingElement; + } } } break; diff --git a/tests/cases/conformance/functions/parameterInitializersBackwardReferencing.ts b/tests/cases/conformance/functions/parameterInitializersBackwardReferencing.ts new file mode 100644 index 00000000000..dce4818a509 --- /dev/null +++ b/tests/cases/conformance/functions/parameterInitializersBackwardReferencing.ts @@ -0,0 +1,13 @@ +// @target: es5, es2015, esnext +// @noEmit: true +// @noTypesAndSymbols: true + +// https://github.com/microsoft/TypeScript/issues/38243 + +function test0({ a = 0, b = a } = {}) { + return { a, b }; +} + +function test1({ c: { a = 0, b = a } = {} } = {}) { + return { a, b }; +} \ No newline at end of file