8000 Merge pull request #3698 from Microsoft/noObjectBindingBuilder · nycdotnet/TypeScript@204d960 · GitHub
[go: up one dir, main page]

< 8000 a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content

Commit 204d960

Browse files
Merge pull request microsoft#3698 from Microsoft/noObjectBindingBuilder
Don't show a builder for property names in object binding patterns
2 parents 9b2d44a + 422a405 commit 204d960

12 files changed

+35
-14
lines changed

src/services/services.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3013,21 +3013,30 @@ namespace ts {
30133013
let objectLikeContainer = tryGetObjectLikeCompletionContainer(contextToken);
30143014
let jsxContainer = tryGetContainingJsxElement(contextToken);
30153015
if (objectLikeContainer) {
3016-
// Object literal expression, look up possible property names from contextual type
3016+
// We're looking up possible property names from contextual/inferred/declared type.
30173017
isMemberCompletion = true;
3018-
isNewIdentifierLocation = true;
30193018

30203019
let typeForObject: Type;
30213020
let existingMembers: Declaration[];
30223021

30233022
if (objectLikeContainer.kind === SyntaxKind.ObjectLiteralExpression) {
3023+
// We are completing on contextual types, but may also include properties
3024+
// other than those within the declared type.
3025+
isNewIdentifierLocation = true;
3026+
30243027
typeForObject = typeChecker.getContextualType(<ObjectLiteralExpression>objectLikeContainer);
30253028
existingMembers = (<ObjectLiteralExpression>objectLikeContainer).properties;
30263029
}
3027-
else {
3030+
else if (objectLikeContainer.kind === SyntaxKind.ObjectBindingPattern) {
3031+
// We are *only* completing on properties from the type being destructured.
3032+
isNewIdentifierLocation = false;
3033+
30283034
typeForObject = typeChecker.getTypeAtLocation(objectLikeContainer);
30293035
existingMembers = (<BindingPattern>objectLikeContainer).elements;
30303036
}
3037+
else {
3038+
Debug.fail("Expected object literal or binding pattern, got " + objectLikeContainer.kind);
3039+
}
30313040

30323041
if (!typeForObject) {
30333042
return false;

tests/cases/fourslash/completionListInObjectBindingPattern01.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010

1111
goTo.marker();
1212
verify.completionListContains("property1");
13-
verify.completionListContains("property2");
13+
verify.completionListContains("property2");
14+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern02.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010

1111
goTo.marker();
1212
verify.completionListContains("property2");
13-
verify.not.completionListContains("property1");
13+
verify.not.completionListContains("property1");
14+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern04.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010

1111
goTo.marker();
1212
verify.completionListContains("property1");
13-
verify.completionListContains("property2");
13+
verify.completionListContains("property2");
14+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern05.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
////var { property1/**/ } = foo;
1010

1111
goTo.marker();
12-
verify.completionListContains("property1");
12+
verify.completionListContains("property1");
13+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern07.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
goTo.marker();
1616
verify.completionListContains("propertyOfI_1");
1717
verify.completionListContains("propertyOfI_2");
18-
verify.not.completionListContains("property2");
18+
verify.not.completionListContains("property2");
19+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern08.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
goTo.marker();
1616
verify.completionListContains("propertyOfI_2");
1717
verify.not.completionListContains("propertyOfI_1");
18-
verify.not.completionListContains("property2");
18+
verify.not.completionListContains("property2");
19+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern09.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ goTo.marker();
1616
verify.completionListContains("property2");
1717
verify.not.completionListContains("property1");
1818
verify.not.completionListContains("propertyOfI_2");
19-
verify.not.completionListContains("propertyOfI_1");
19+
verify.not.completionListContains("propertyOfI_1");
20+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern10.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ verify.completionListContains("property2");
1717
verify.not.completionListContains("property1");
1818
verify.not.completionListContains("propertyOfI_2");
1919
verify.not.completionListContains("propertyOfI_1");
20+
verify.not.completionListAllowsNewIdentifier();
2021

2122
goTo.marker("2");
2223
verify.completionListContains("property1");
23-
verify.completionListContains("property2");
24+
verify.completionListContains("property2");
25+
verify.not.completionListAllowsNewIdentifier();

tests/cases/fourslash/completionListInObjectBindingPattern11.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
goTo.marker("");
1111
verify.completionListContains("property2");
1212
verify.not.completionListContains("property1");
13-
verify.not.completionListContains("prop1");
13+
verify.not.completionListContains("prop1");
14+
verify.not.completionListAllowsNewIdentifier();

0 commit comments

Comments
 (0)
0