Skip to content

Commit 307b264

Browse files
keertipCommit Queue
authored andcommitted
[Completion]Add a few more checks when suggesting keywords.
Change-Id: I23a3984673ae64cedb1bd5cc24cdb60c57ff620e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/436000 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Keerti Parthasarathy <[email protected]>
1 parent a1ea2b5 commit 307b264

File tree

2 files changed

+36
-12
lines changed

2 files changed

+36
-12
lines changed

pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2610,17 +2610,30 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
26102610
var noRequired = node.requiredKeyword == null;
26112611
bool suggestCovariant = true;
26122612
bool suggestThis = true;
2613+
bool suggestVoid = true;
2614+
bool suggestDynamic = true;
2615+
bool suggestFinal = true;
2616+
bool suggestRequired = true;
26132617
if (name != null && node.isSingleIdentifier) {
26142618
collector.completionLocation = 'FormalParameterList_parameter';
26152619
keywordHelper.addFormalParameterKeywords(
26162620
node.parentFormalParameterList,
2617-
suggestRequired: name.keyword != Keyword.REQUIRED,
2618-
suggestCovariant: name.keyword != Keyword.COVARIANT,
2621+
suggestRequired: suggestRequired && name.keyword != Keyword.REQUIRED,
2622+
suggestCovariant: suggestCovariant && name.keyword != Keyword.COVARIANT,
26192623
suggestVariableName: true,
26202624
);
26212625
suggestCovariant = false;
26222626
suggestThis = false;
2623-
_forTypeAnnotation(node);
2627+
suggestFinal = false;
2628+
suggestRequired = false;
2629+
_forTypeAnnotation(
2630+
node,
2631+
suggestDynamic: suggestDynamic,
2632+
suggestVoid: suggestVoid,
2633+
);
2634+
suggestDynamic = false;
2635+
suggestVoid = false;
2636+
26242637
if (name.isKeyword) {
26252638
return;
26262639
}
@@ -2643,7 +2656,7 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
26432656
if (type.beginToken.coversOffset(offset)) {
26442657
keywordHelper.addFormalParameterKeywords(
26452658
node.parentFormalParameterList,
2646-
suggestRequired: noRequired,
2659+
suggestRequired: noRequired && suggestRequired,
26472660
suggestVariableName:
26482661
node.name == null || type.beginToken.offset == offset,
26492662
);
@@ -2663,13 +2676,18 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
26632676
DefaultFormalParameter(parent: FormalParameterList list)) {
26642677
keywordHelper.addFormalParameterKeywords(
26652678
list,
2666-
suggestRequired: noRequired,
2679+
suggestRequired: noRequired && suggestRequired,
26672680
suggestVariableName: name.coversOffset(offset),
26682681
suggestCovariant: suggestCovariant,
26692682
suggestThis: suggestThis,
2683+
suggestFinal: suggestFinal,
26702684
);
26712685
}
2672-
_forTypeAnnotation(node);
2686+
_forTypeAnnotation(
2687+
node,
2688+
suggestVoid: suggestVoid,
2689+
suggestDynamic: suggestDynamic,
2690+
);
26732691
}
26742692
}
26752693
}
@@ -3820,13 +3838,16 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
38203838
bool excludeTypeNames = false,
38213839
Set<AstNode> excludedNodes = const {},
38223840
bool isInDeclaration = false,
3841+
bool suggestVoid = true,
3842+
bool suggestDynamic = true,
38233843
}) {
3824-
if (!(mustBeExtensible ||
3825-
mustBeImplementable ||
3826-
mustBeMixable ||
3827-
isInDeclaration)) {
3844+
if (suggestDynamic &&
3845+
!(mustBeExtensible ||
3846+
mustBeImplementable ||
3847+
mustBeMixable ||
3848+
isInDeclaration)) {
38283849
keywordHelper.addKeyword(Keyword.DYNAMIC);
3829-
if (!mustBeNonVoid) {
3850+
if (suggestVoid && !mustBeNonVoid) {
38303851
keywordHelper.addKeyword(Keyword.VOID);
38313852
}
38323853
}

pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,11 +430,14 @@ class KeywordHelper {
430430
required bool suggestVariableName,
431431
bool suggestCovariant = true,
432432
bool suggestThis = true,
433+
bool suggestFinal = true,
433434
}) {
434435
if (suggestCovariant) {
435436
addKeyword(Keyword.COVARIANT);
436437
}
437-
addKeyword(Keyword.FINAL);
438+
if (suggestFinal) {
439+
addKeyword(Keyword.FINAL);
440+
}
438441
if (suggestRequired && parameterList.inNamedGroup(offset)) {
439442
addKeyword(Keyword.REQUIRED);
440443
}

0 commit comments

Comments
 (0)