| Index: pkg/analyzer/test/src/task/strong/inferred_type_test.dart
|
| diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
|
| index 9738a9b2cb6d2a622bae5cb22a3dc490db08e303..076c4a298fb3c07605918648abeeedb3bfff49f0 100644
|
| --- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
|
| +++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
|
| @@ -62,7 +62,7 @@ main() {
|
| var mainUnit = checkFile(r'''
|
| import 'dart:async';
|
| import 'dart:math' show Random;
|
| -var f = /*info:INFERRED_TYPE_CLOSURE*/() async {
|
| +var f = /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() async {
|
| if (new Random().nextBool()) {
|
| return new Future<int>.value(1);
|
| } else {
|
| @@ -101,7 +101,7 @@ main() {
|
| var mainUnit = checkFile(r'''
|
| import 'dart:async';
|
| import 'dart:math' show Random;
|
| -var f = /*info:INFERRED_TYPE_CLOSURE*/() async {
|
| +var f = /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() async {
|
| if (new Random().nextBool()) {
|
| return 1;
|
| } else {
|
| @@ -140,7 +140,7 @@ main() {
|
| var mainUnit = checkFile(r'''
|
| import 'dart:async';
|
| import 'dart:math' show Random;
|
| -var f = /*info:INFERRED_TYPE_CLOSURE*/() async {
|
| +var f = /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() async {
|
| if (new Random().nextBool()) {
|
| return new Future<int>.value(1);
|
| } else {
|
| @@ -175,7 +175,7 @@ main() {
|
| void test_blockBodiedLambdas_asyncStar_topLevel() {
|
| var mainUnit = checkFile(r'''
|
| import 'dart:async';
|
| -var f = /*info:INFERRED_TYPE_CLOSURE*/() async* {
|
| +var f = /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() async* {
|
| yield 1;
|
| Stream<double> s;
|
| yield* s;
|
| @@ -198,7 +198,7 @@ test1() {
|
| void test_blockBodiedLambdas_basic_topLevel() {
|
| checkFile(r'''
|
| List<int> o;
|
| -var y = o.map(/*info:INFERRED_TYPE_CLOSURE*/(x) { return x + 1; });
|
| +var y = o.map(/*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/(x) { return x + 1; });
|
| Iterable<int> z = y;
|
| ''');
|
| }
|
| @@ -223,7 +223,7 @@ main() async {
|
| void test_blockBodiedLambdas_doesNotInferBottom_async_topLevel() {
|
| var mainUnit = checkFile(r'''
|
| import 'dart:async';
|
| -var f = () async { return null; };
|
| +var f = /*warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() async { return null; };
|
| ''');
|
| var f = mainUnit.topLevelVariables[0];
|
| expect(f.type.toString(), '() → Future<dynamic>');
|
| @@ -249,7 +249,7 @@ main() async {
|
| void test_blockBodiedLambdas_doesNotInferBottom_asyncStar_topLevel() {
|
| var mainUnit = checkFile(r'''
|
| import 'dart:async';
|
| -var f = () async* { yield null; };
|
| +var f = /*warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() async* { yield null; };
|
| ''');
|
| var f = mainUnit.topLevelVariables[0];
|
| expect(f.type.toString(), '() → Stream<dynamic>');
|
| @@ -304,7 +304,7 @@ main() {
|
|
|
| void test_blockBodiedLambdas_doesNotInferBottom_syncStar_topLevel() {
|
| var mainUnit = checkFile(r'''
|
| -var f = () sync* { yield null; };
|
| +var f = /*warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() sync* { yield null; };
|
| ''');
|
| var f = mainUnit.topLevelVariables[0];
|
| expect(f.type.toString(), '() → Iterable<dynamic>');
|
| @@ -357,7 +357,7 @@ test2() {
|
| checkFile(r'''
|
| import 'dart:math' show Random;
|
| List<num> o;
|
| -var y = o.map(/*info:INFERRED_TYPE_CLOSURE*/(x) {
|
| +var y = o.map(/*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/(x) {
|
| if (new Random().nextBool()) {
|
| return x.toInt() + 1;
|
| } else {
|
| @@ -388,7 +388,7 @@ main() {
|
| void test_blockBodiedLambdas_nestedLambdas_topLevel() {
|
| // Original feature request: https://github.com/dart-lang/sdk/issues/25487
|
| var mainUnit = checkFile(r'''
|
| -var f = /*info:INFERRED_TYPE_CLOSURE*/() {
|
| +var f = /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() {
|
| return /*info:INFERRED_TYPE_CLOSURE*/(int x) { return 2.0 * x; };
|
| };
|
| ''');
|
| @@ -440,7 +440,7 @@ main() {
|
|
|
| void test_blockBodiedLambdas_syncStar_topLevel() {
|
| var mainUnit = checkFile(r'''
|
| -var f = /*info:INFERRED_TYPE_CLOSURE*/() sync* {
|
| +var f = /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() sync* {
|
| yield 1;
|
| yield* /*info:INFERRED_TYPE_LITERAL*/[3, 4.0];
|
| };
|
| @@ -3857,6 +3857,57 @@ class C {
|
| // No type should be inferred for a because there is a circular reference
|
| // between a and c.
|
| }
|
| +
|
| + void test_unsafeBlockClosureInference_constructorCall_explicitDynamicParam() {
|
| + var mainUnit = checkFile('''
|
| +class C<T> {
|
| + C(T x());
|
| +}
|
| +var v = new C<dynamic>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
|
| +''');
|
| + var v = mainUnit.topLevelVariables[0];
|
| + expect(v.name, 'v');
|
| + expect(v.type.toString(), 'C<dynamic>');
|
| + }
|
| +
|
| + void test_unsafeBlockClosureInference_constructorCall_explicitTypeParam() {
|
| + var mainUnit = checkFile('''
|
| +class C<T> {
|
| + C(T x());
|
| +}
|
| +var v = new C<int>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
|
| +''');
|
| + var v = mainUnit.topLevelVariables[0];
|
| + expect(v.name, 'v');
|
| + expect(v.type.toString(), 'C<int>');
|
| + }
|
| +
|
| + void test_unsafeBlockClosureInference_constructorCall_implicitTypeParam() {
|
| + var mainUnit = checkFile('''
|
| +class C<T> {
|
| + C(T x());
|
| +}
|
| +var v = /*info:INFERRED_TYPE_ALLOCATION*/new C(
|
| + /*info:INFERRED_TYPE_CLOSURE,warning:UNSAFE_BLOCK_CLOSURE_INFERENCE*/() {
|
| + return 1;
|
| + });
|
| +''');
|
| + var v = mainUnit.topLevelVariables[0];
|
| + expect(v.name, 'v');
|
| + expect(v.type.toString(), 'C<int>');
|
| + }
|
| +
|
| + void test_unsafeBlockClosureInference_constructorCall_noTypeParam() {
|
| + var mainUnit = checkFile('''
|
| +class C {
|
| + C(x());
|
| +}
|
| +var v = new C(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
|
| +''');
|
| + var v = mainUnit.topLevelVariables[0];
|
| + expect(v.name, 'v');
|
| + expect(v.type.toString(), 'C');
|
| + }
|
| }
|
|
|
| @reflectiveTest
|
|
|