Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(501)

Unified Diff: pkg/analysis_server/test/services/refactoring/inline_method_test.dart

Issue 2463493002: Fix for inlining async methods/getters. (Closed)
Patch Set: Check for cases for async inlining. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analysis_server/lib/src/services/refactoring/inline_method.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
« no previous file with comments | « pkg/analysis_server/lib/src/services/refactoring/inline_method.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698