Skip to content

Commit 498d06f

Browse files
Got filtering working in object binding patterns.
1 parent c114de1 commit 498d06f

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/services/services.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3010,7 +3010,7 @@ namespace ts {
30103010
let typeMembers = typeChecker.getPropertiesOfType(typeForObject);
30113011
if (typeMembers && typeMembers.length > 0) {
30123012
// Add filtered items to the completion list
3013-
symbols = filterContextualMembersList(typeMembers, existingMembers);
3013+
symbols = filterObjectMembersList(typeMembers, existingMembers);
30143014
}
30153015
}
30163016
else if (getAncestor(contextToken, SyntaxKind.ImportClause)) {
@@ -3356,26 +3356,28 @@ namespace ts {
33563356
return filter(exports, e => !lookUp(exisingImports, e.name));
33573357
}
33583358

3359-
function filterContextualMembersList(contextualMemberSymbols: Symbol[], existingMembers: Declaration[]): Symbol[] {
3359+
function filterObjectMembersList(contextualMemberSymbols: Symbol[], existingMembers: Declaration[]): Symbol[] {
33603360
if (!existingMembers || existingMembers.length === 0) {
33613361
return contextualMemberSymbols;
33623362
}
33633363

33643364
let existingMemberNames: Map<boolean> = {};
3365-
forEach(existingMembers, m => {
3366-
if (m.kind !== SyntaxKind.PropertyAssignment && m.kind !== SyntaxKind.ShorthandPropertyAssignment) {
3367-
// Ignore omitted expressions for missing members in the object literal
3368-
return;
3365+
for (let m of existingMembers) {
3366+
if (m.kind !== SyntaxKind.PropertyAssignment &&
3367+
m.kind !== SyntaxKind.ShorthandPropertyAssignment &&
3368+
m.kind !== SyntaxKind.BindingElement) {
3369+
// Ignore omitted expressions for missing members
3370+
continue;
33693371
}
33703372

33713373
if (m.getStart() <= position && position <= m.getEnd()) {
33723374
// If this is the current item we are editing right now, do not filter it out
3373-
return;
3375+
continue;
33743376
}
33753377

33763378
// TODO(jfreeman): Account for computed property name
33773379
existingMemberNames[(<Identifier>m.name).text] = true;
3378-
});
3380+
}
33793381

33803382
let filteredMembers: Symbol[] = [];
33813383
forEach(contextualMemberSymbols, s => {

0 commit comments

Comments
 (0)