Skip to content

Commit

Permalink
Version 3.2.0-225.0.dev
Browse files Browse the repository at this point in the history
Merge 2a30837 into dev
  • Loading branch information
Dart CI committed Oct 3, 2023
2 parents 86d84b3 + 2a30837 commit 318c468
Show file tree
Hide file tree
Showing 12 changed files with 569 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1204,11 +1204,11 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
keywordHelper.addKeyword(Keyword.WHEN);
}
} else {
if (node.statements.isEmpty) {
if (node.statements.isEmpty || offset <= node.statements.first.offset) {
keywordHelper.addKeyword(Keyword.CASE);
keywordHelper.addKeywordFromText(Keyword.DEFAULT, ':');
}
keywordHelper.addStatementKeywords(node);
_forStatement(node);
}
}

Expand Down Expand Up @@ -1418,7 +1418,9 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {

@override
void visitVariableDeclarationStatement(VariableDeclarationStatement node) {
_forIncompletePrecedingStatement(node);
if (_forIncompletePrecedingStatement(node)) {
return;
}
if (offset <= node.beginToken.end) {
_forStatement(node);
}
Expand Down Expand Up @@ -1515,7 +1517,8 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
keywordHelper.addExtensionMemberKeywords(isStatic: false);
}

/// Return `true` if the preceding member is incomplete.
/// Return `true` if the preceding member is incomplete and no other
/// suggestions should be offered.
///
/// If the completion offset is within the first token of the given [member],
/// then check to see whether the preceding member is incomplete. If it is,
Expand Down Expand Up @@ -1544,6 +1547,9 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
return false;
}

/// Return `true` if the preceding statement is incomplete and no other
/// suggestions should be offered.
///
/// If the completion offset is within the first token of the given
/// [statement], then check to see whether the preceding statement is
/// incomplete. If it is, then the user might be attempting to complete the
Expand All @@ -1568,7 +1574,7 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
case TryStatement declaration:
if (declaration.finallyBlock == null) {
visitTryStatement(declaration);
return true;
return declaration.catchClauses.isEmpty;
}
case _:
}
Expand All @@ -1592,6 +1598,7 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
/// beginning of a statement. The [node] provides context to determine which
/// keywords to include.
void _forStatement(AstNode node) {
_forExpression(node);
keywordHelper.addStatementKeywords(node);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,10 @@ class KeywordHelper {
}
if (node is Expression) {
return !node.inConstantContext;
} else if (node is ExpressionStatement || node is IfStatement) {
} else if (node is Block ||
node is EmptyStatement ||
node is ExpressionStatement ||
node is IfStatement) {
return true;
} else if (node is PatternVariableDeclaration) {
return true;
Expand All @@ -263,6 +266,8 @@ class KeywordHelper {
return true;
} else if (node is VariableDeclaration) {
return !node.isConst;
} else if (node is VariableDeclarationStatement) {
return !node.variables.isConst;
} else if (node is WhenClause) {
return true;
}
Expand All @@ -274,7 +279,7 @@ class KeywordHelper {
if (node is CollectionElement && node is! Expression) {
node = node.parent;
}
if (node is SwitchPatternCase) {
if (node is SwitchPatternCase && offset <= node.colon.offset) {
return false;
}
return true;
Expand All @@ -291,7 +296,8 @@ class KeywordHelper {
addKeyword(Keyword.SUPER);
addKeyword(Keyword.THIS);
}
if (node.inAsyncMethodOrFunction) {
if (node.inAsyncMethodOrFunction ||
node.inAsyncStarOrSyncStarMethodOrFunction) {
addKeyword(Keyword.AWAIT);
}
if (switchIsValid(node) && featureSet.isEnabled(Feature.patterns)) {
Expand Down Expand Up @@ -520,10 +526,6 @@ class KeywordHelper {
/// beginning of a statement. The [node] provides context to determine which
/// keywords to include.
void addStatementKeywords(AstNode node) {
if (node.inClassMemberBody) {
addKeyword(Keyword.SUPER);
addKeyword(Keyword.THIS);
}
if (node.inAsyncMethodOrFunction) {
addKeyword(Keyword.AWAIT);
} else if (node.inAsyncStarOrSyncStarMethodOrFunction) {
Expand All @@ -538,22 +540,28 @@ class KeywordHelper {
if (node.inSwitch) {
addKeyword(Keyword.BREAK);
}
// TODO(brianwilkerson) Add `else` when after an `if` statement, similar to
// the way `addCollectionElementKeywords` works.
addKeyword(Keyword.ASSERT);
addKeyword(Keyword.CONST);
addKeyword(Keyword.DO);
addKeyword(Keyword.DYNAMIC);
addKeyword(Keyword.FINAL);
addKeyword(Keyword.FOR);
addKeyword(Keyword.IF);
addKeyword(Keyword.RETURN);
addKeyword(Keyword.SWITCH);
if (!featureSet.isEnabled(Feature.patterns)) {
// We don't suggest `switch` when patterns is enabled because `switch`
// will be suggested by `addExpressionKeywords`, which should always be
// called in conjunction with this method.
addKeyword(Keyword.SWITCH);
}
addKeyword(Keyword.THROW);
addKeyword(Keyword.TRY);
addKeyword(Keyword.VAR);
addKeyword(Keyword.VOID);
addKeyword(Keyword.WHILE);
if (node.inAsyncStarOrSyncStarMethodOrFunction) {
addKeyword(Keyword.YIELD);
addKeywordFromText(Keyword.YIELD, '*');
}
if (featureSet.isEnabled(Feature.non_nullable)) {
addKeyword(Keyword.LATE);
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/analysis_server/test/completion_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2021,7 +2021,7 @@ class X {
'3+true',
'4+toString'
],
failingTests: '123');
failingTests: '12');

// conditions & operators
buildTests(
Expand Down
Loading

0 comments on commit 318c468

Please sign in to comment.