Index: pkg/analysis_server/test/services/refactoring/inline_method_test.dart |
diff --git a/pkg/analysis_server/test/services/refactoring/inline_method_test.dart b/pkg/analysis_server/test/services/refactoring/inline_method_test.dart |
index 7c35f5ead856c57707912f2540e97f73cf48eca0..bc1d29c381078a2033a8c8fd013ca4d5af6691ff 100644 |
--- a/pkg/analysis_server/test/services/refactoring/inline_method_test.dart |
+++ b/pkg/analysis_server/test/services/refactoring/inline_method_test.dart |
@@ -66,6 +66,56 @@ class A { |
expect(refactoring.isDeclaration, isTrue); |
} |
+ test_bad_async_intoSyncStar() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> get test async => 42; |
+ Iterable<Future<int>> foo() sync* { |
+ yield test; |
+ } |
+} |
+'''); |
+ _createRefactoring('test async'); |
+ // error |
+ return _assertConditionsFatal('Cannot inline async into sync*.'); |
+ } |
+ |
+ test_bad_async_targetIsSync_doesNotReturnFuture() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> get test async => 42; |
+ double foo() { |
+ test; |
+ return 1.2; |
+ } |
+} |
+'''); |
+ _createRefactoring('test async'); |
+ // error |
+ return _assertConditionsFatal( |
+ 'Cannot inline async into a function that does not return a Future.'); |
+ } |
+ |
+ test_bad_asyncStar() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Stream<int> test() async* { |
+ yield 1; |
+ yield 2; |
+ } |
+ foo() { |
+ test(); |
+ } |
+} |
+'''); |
+ _createRefactoring('test() async*'); |
+ // error |
+ return _assertConditionsFatal('Cannot inline a generator.'); |
+ } |
+ |
test_bad_cascadeInvocation() async { |
indexTestUnit(r''' |
class A { |
@@ -711,6 +761,100 @@ main() { |
'''); |
} |
+ test_getter_async_targetIsAsync() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> get test async => 42; |
+ Future<int> foo() async { |
+ return test; |
+ } |
+} |
+'''); |
+ _createRefactoring('test async'); |
+ // validate change |
+ return _assertSuccessfulRefactoring(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> foo() async { |
+ return 42; |
+ } |
+} |
+'''); |
+ } |
+ |
+ test_getter_async_targetIsAsyncStar() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> get test async => 42; |
+ Stream<int> foo() async { |
+ return await test; |
+ } |
+} |
+'''); |
+ _createRefactoring('test async'); |
+ // validate change |
+ return _assertSuccessfulRefactoring(r''' |
+import 'dart:async'; |
+class A { |
+ Stream<int> foo() async { |
+ return await 42; |
+ } |
+} |
+'''); |
+ } |
+ |
+ test_getter_async_targetIsSync() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> get test async => 42; |
+ Future<int> foo() { |
+ return test; |
+ } |
+} |
+'''); |
+ _createRefactoring('test async'); |
+ // validate change |
+ return _assertSuccessfulRefactoring(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> foo() async { |
+ return 42; |
+ } |
+} |
+'''); |
+ } |
+ |
+ test_getter_async_targetIsSync2() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> get test async => 42; |
+ Future<int> foo1() { |
+ return test; |
+ } |
+ Future<int> foo2() { |
+ return test; |
+ } |
+} |
+'''); |
+ _createRefactoring('test async'); |
+ // validate change |
+ return _assertSuccessfulRefactoring(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> foo1() async { |
+ return 42; |
+ } |
+ Future<int> foo2() async { |
+ return 42; |
+ } |
+} |
+'''); |
+ } |
+ |
test_getter_classMember_instance() { |
indexTestUnit(r''' |
class A { |
@@ -803,6 +947,50 @@ main() { |
expect(refactoring.inlineAll, false); |
} |
+ test_method_async() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> test() async => 42; |
+ Future<int> foo() { |
+ return test(); |
+ } |
+} |
+'''); |
+ _createRefactoring('test() async'); |
+ // validate change |
+ return _assertSuccessfulRefactoring(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> foo() async { |
+ return 42; |
+ } |
+} |
+'''); |
+ } |
+ |
+ test_method_async2() { |
+ indexTestUnit(r''' |
+import 'dart:async'; |
+class A { |
+ Future<int> test() async => 42; |
+ Future foo() { |
+ return [test(), test()]; |
+ } |
+} |
+'''); |
+ _createRefactoring('test() async'); |
+ // validate change |
+ return _assertSuccessfulRefactoring(r''' |
+import 'dart:async'; |
+class A { |
+ Future foo() async { |
+ return [42, 42]; |
+ } |
+} |
+'''); |
+ } |
+ |
test_method_emptyBody() { |
indexTestUnit(r''' |
abstract class A { |