fix for unawaited_futures
Change-Id: I9ef54b1d30dd651ebd2fe20c4ce89808879da529
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95982
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index ec60587..a262d98 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -105,6 +105,8 @@
class DartFixKind {
static const ADD_ASYNC =
const FixKind('ADD_ASYNC', 50, "Add 'async' modifier");
+ static const ADD_AWAIT =
+ const FixKind('ADD_AWAIT', 50, "Add 'await' modifier");
static const ADD_EXPLICIT_CAST = const FixKind(
'ADD_EXPLICIT_CAST', 50, "Add cast",
appliedTogetherMessage: "Add all casts in file");
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 322e99a..fc78e84 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -610,6 +610,9 @@
if (name == LintNames.type_init_formals) {
await _addFix_removeTypeAnnotation();
}
+ if (name == LintNames.unawaited_futures) {
+ await _addFix_addAwait();
+ }
if (name == LintNames.unnecessary_brace_in_string_interps) {
await _addFix_removeInterpolationBraces();
}
@@ -656,6 +659,14 @@
}
}
+ Future<void> _addFix_addAwait() async {
+ var changeBuilder = _newDartChangeBuilder();
+ await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
+ builder.addSimpleInsertion(node.offset, 'await ');
+ });
+ _addFixFromBuilder(changeBuilder, DartFixKind.ADD_AWAIT);
+ }
+
Future<void> _addFix_addExplicitCast() async {
// TODO(brianwilkerson) Determine whether this await is necessary.
await null;
@@ -4349,6 +4360,7 @@
static const String prefer_final_locals = 'prefer_final_locals';
static const String prefer_is_not_empty = 'prefer_is_not_empty';
static const String type_init_formals = 'type_init_formals';
+ static const String unawaited_futures = 'unawaited_futures';
static const String unnecessary_brace_in_string_interps =
'unnecessary_brace_in_string_interps';
static const String unnecessary_const = 'unnecessary_const';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_await_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_await_test.dart
new file mode 100644
index 0000000..1391007
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_await_test.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/correction/fix_internal.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(AddAwaitTest);
+ });
+}
+
+@reflectiveTest
+class AddAwaitTest extends FixProcessorLintTest {
+ @override
+ FixKind get kind => DartFixKind.ADD_AWAIT;
+
+ @override
+ String get lintCode => LintNames.unawaited_futures;
+
+ test_intLiteral() async {
+ await resolveTestUnit('''
+Future doSomething() => new Future();
+
+void main() async {
+ doSomething()/*LINT*/;
+}
+''');
+ await assertHasFix('''
+Future doSomething() => new Future();
+
+void main() async {
+ await doSomething()/*LINT*/;
+}
+''');
+ }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
index 07369fb..3ab6d1b 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
@@ -5,6 +5,7 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'add_async_test.dart' as add_async;
+import 'add_await_test.dart' as add_await;
import 'add_explicit_cast_test.dart' as add_explicit_cast;
import 'add_field_formal_parameters_test.dart' as add_field_formal_parameters;
import 'add_missing_parameter_named_test.dart' as add_missing_parameter_named;
@@ -101,6 +102,7 @@
main() {
defineReflectiveSuite(() {
add_async.main();
+ add_await.main();
add_explicit_cast.main();
add_field_formal_parameters.main();
add_missing_parameter_named.main();