diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart index a386476895fc..1410c1ce9fc9 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart @@ -15,6 +15,7 @@ import 'package:analysis_server/src/utilities/strings.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/precedence.dart'; +import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/source/source_range.dart'; @@ -572,6 +573,12 @@ class _ReferenceProcessor { } // do replace var methodUsageRange = range.node(usage); + var awaitKeyword = Keyword.AWAIT.lexeme; + if (usage.parent is AwaitExpression && + source.startsWith(awaitKeyword)) { + // remove the duplicate await keyword and the following whitespace. + source = source.substring(awaitKeyword.length + 1); + } var edit = newSourceEdit_range(methodUsageRange, source); _addRefEdit(edit); } else { diff --git a/pkg/analysis_server/test/edit/refactoring_test.dart b/pkg/analysis_server/test/edit/refactoring_test.dart index f1ae36b9f10a..a388f6515258 100644 --- a/pkg/analysis_server/test/edit/refactoring_test.dart +++ b/pkg/analysis_server/test/edit/refactoring_test.dart @@ -1321,6 +1321,22 @@ void f() { '''); } + Future test_topLevelFunction_async() { + addTestFile(''' +Future a() async => 3; +Future b() async => await a(); +Future c() async => await b(); +} +'''); + return assertSuccessfulRefactoring(() { + return _sendInlineRequest('b('); + }, ''' +Future a() async => 3; +Future c() async => await a(); +} +'''); + } + Future test_topLevelFunction_oneInvocation() { addTestFile(''' test(a, b) {