From d892a55aa9cd14b86bd6578ed102540fbcf7c8eb Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 24 Jun 2015 12:35:11 -0400 Subject: [PATCH] Use 'propertyName' when available in a BindingPattern. --- src/services/services.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 2283d02ccb9..25949082e8d 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3363,20 +3363,31 @@ namespace ts { let existingMemberNames: Map = {}; for (let m of existingMembers) { + // Ignore omitted expressions for missing members if (m.kind !== SyntaxKind.PropertyAssignment && m.kind !== SyntaxKind.ShorthandPropertyAssignment && m.kind !== SyntaxKind.BindingElement) { - // Ignore omitted expressions for missing members continue; } + // If this is the current item we are editing right now, do not filter it out if (m.getStart() <= position && position <= m.getEnd()) { - // If this is the current item we are editing right now, do not filter it out continue; } - // TODO(jfreeman): Account for computed property name - existingMemberNames[(m.name).text] = true; + let existingName: string; + + if (m.kind === SyntaxKind.BindingElement && (m).propertyName) { + existingName = (m).propertyName.text; + } + else { + // TODO(jfreeman): Account for computed property name + // NOTE: if one only performs this step when m.name is an identifier, + // things like '__proto__' are not filtered out. + existingName = (m.name).text; + } + + existingMemberNames[existingName] = true; } let filteredMembers: Symbol[] = [];