Skip to content

Commit 8dcb212

Browse files
keertipCommit Queue
authored andcommitted
Issue 53669: Remove duplicate await when inlining methods.
Fixes #53669 Change-Id: I64eb73d5eef4a8a8ab5184b3e67bb2303faed5e7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/360580 Commit-Queue: Keerti Parthasarathy <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent b2d31da commit 8dcb212

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:analysis_server/src/utilities/strings.dart';
1515
import 'package:analyzer/dart/analysis/results.dart';
1616
import 'package:analyzer/dart/ast/ast.dart';
1717
import 'package:analyzer/dart/ast/precedence.dart';
18+
import 'package:analyzer/dart/ast/token.dart';
1819
import 'package:analyzer/dart/ast/visitor.dart';
1920
import 'package:analyzer/dart/element/element.dart';
2021
import 'package:analyzer/source/source_range.dart';
@@ -572,6 +573,12 @@ class _ReferenceProcessor {
572573
}
573574
// do replace
574575
var methodUsageRange = range.node(usage);
576+
var awaitKeyword = Keyword.AWAIT.lexeme;
577+
if (usage.parent is AwaitExpression &&
578+
source.startsWith(awaitKeyword)) {
579+
// remove the duplicate await keyword and the following whitespace.
580+
source = source.substring(awaitKeyword.length + 1);
581+
}
575582
var edit = newSourceEdit_range(methodUsageRange, source);
576583
_addRefEdit(edit);
577584
} else {

pkg/analysis_server/test/edit/refactoring_test.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1321,6 +1321,22 @@ void f() {
13211321
''');
13221322
}
13231323

1324+
Future<void> test_topLevelFunction_async() {
1325+
addTestFile('''
1326+
Future<int> a() async => 3;
1327+
Future<int> b() async => await a();
1328+
Future<int> c() async => await b();
1329+
}
1330+
''');
1331+
return assertSuccessfulRefactoring(() {
1332+
return _sendInlineRequest('b(');
1333+
}, '''
1334+
Future<int> a() async => 3;
1335+
Future<int> c() async => await a();
1336+
}
1337+
''');
1338+
}
1339+
13241340
Future<void> test_topLevelFunction_oneInvocation() {
13251341
addTestFile('''
13261342
test(a, b) {

0 commit comments

Comments
 (0)