diff --git a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart index 2277f99ff2b..3c7bdd83a98 100644 --- a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart +++ b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart @@ -804,6 +804,9 @@ class StatementCompletionProcessor { if (_isSyntheticExpression(statement.condition)) { exitPosition = _newPosition(statement.leftParenthesis.offset + 1); sb = new SourceBuilder(file, statement.rightParenthesis.offset + 1); + } else if (statement.rightParenthesis.isSynthetic) { + sb = new SourceBuilder(file, statement.condition.end); + sb.append(')'); } else { int afterParen = statement.rightParenthesis.offset + 1; if (utils diff --git a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart index c3ddced2138..07a231e35e4 100644 --- a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart +++ b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart @@ -1235,6 +1235,27 @@ main() { (s) => _after(s, ' ')); } + test_withCondition_noRightParenthesis() async { + await _prepareCompletion( + 'if (true', + ''' +main() { + if (true +} +''', + atEnd: true); + _assertHasChange( + 'Complete if-statement', + ''' +main() { + if (true) { + //// + } +} +''', + (s) => _after(s, ' ')); + } + test_withElse() async { await _prepareCompletion( 'else',