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

Unified Diff: pkg/analyzer/test/src/task/strong/inferred_type_test.dart

Issue 2963313002: Stop using ExecutableElement.localVariables in inference tests. (Closed)
Patch Set: Created 3 years, 6 months 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 | « no previous file | pkg/analyzer/test/utils.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9d64a9c15d385a987d12a0287d88abbf21d0c49c..162d7b76d617cf2f3655b34f0e31876e7d55e01a 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -11,6 +11,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
+import '../../../utils.dart';
import 'strong_test_helper.dart';
void main() {
@@ -36,6 +37,12 @@ abstract class InferredTypeMixin {
/**
* Add the file, process it (resolve, validate, etc) and return the resolved
+ * unit.
+ */
+ Future<CompilationUnit> checkFile(String content);
+
+ /**
+ * Add the file, process it (resolve, validate, etc) and return the resolved
* unit element.
*/
Future<CompilationUnitElement> checkFileElement(String content);
@@ -87,7 +94,7 @@ var g = () async => futureOrInt;
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
import 'dart:async';
import 'dart:math' show Random;
main() {
@@ -102,7 +109,7 @@ main() {
Future<int> h = /*info:ASSIGNMENT_CAST*/f();
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Future<num>');
}
@@ -110,7 +117,7 @@ main() {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
import 'dart:async';
import 'dart:math' show Random;
main() {
@@ -125,7 +132,7 @@ main() {
Future<int> h = /*info:ASSIGNMENT_CAST*/f();
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Future<num>');
}
@@ -133,7 +140,7 @@ main() {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
import 'dart:async';
import 'dart:math' show Random;
main() {
@@ -148,7 +155,7 @@ main() {
Future<int> h = /*info:ASSIGNMENT_CAST*/f();
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Future<num>');
}
@@ -156,7 +163,7 @@ main() {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
import 'dart:async';
main() {
var f = /*info:INFERRED_TYPE_CLOSURE*/() async* {
@@ -168,7 +175,7 @@ main() {
Stream<int> h = /*info:ASSIGNMENT_CAST*/f();
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Stream<num>');
}
@@ -186,31 +193,31 @@ test1() {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
main() {
String f() => null;
var g = f;
g = /*info:INFERRED_TYPE_CLOSURE*/() { return /*error:RETURN_OF_INVALID_TYPE*/1; };
}
''');
- var f = mainUnit.functions[0].localVariables[0];
- expect(f.type.toString(), '() → String');
+ var g = findLocalVariable(unit, 'g');
+ expect(g.type.toString(), '() → String');
}
test_blockBodiedLambdas_downwardsIncompatibleWithUpwardsInference_topLevel() async {
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFileElement(r'''
String f() => null;
var g = f;
''');
- var f = mainUnit.topLevelVariables[0];
- expect(f.type.toString(), '() → String');
+ var g = unit.topLevelVariables[0];
+ expect(g.type.toString(), '() → String');
}
test_blockBodiedLambdas_inferBottom_async() async {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
import 'dart:async';
main() async {
var f = /*info:INFERRED_TYPE_CLOSURE*/() async { return null; };
@@ -219,7 +226,7 @@ main() async {
String s = await f();
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Future<Null>');
}
@@ -227,7 +234,7 @@ main() async {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
import 'dart:async';
main() async {
var f = /*info:INFERRED_TYPE_CLOSURE*/() async* { yield null; };
@@ -236,7 +243,7 @@ main() async {
String s = await f().first;
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Stream<Null>');
}
@@ -244,9 +251,9 @@ main() async {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
var h = null;
-void foo(int f(Object _)) {}
+void foo(int g(Object _)) {}
main() {
var f = /*info:INFERRED_TYPE_CLOSURE*/(Object x) { return null; };
@@ -261,7 +268,7 @@ main() {
}
''');
- var f = mainUnit.functions[1].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '(Object) → Null');
}
@@ -269,7 +276,7 @@ main() {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
main() {
var f = /*info:INFERRED_TYPE_CLOSURE*/() sync* { yield null; };
Iterable y = f();
@@ -277,7 +284,7 @@ main() {
String s = f().first;
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Iterable<Null>');
}
@@ -304,14 +311,14 @@ test2() {
return;
}
// Original feature request: https://github.com/dart-lang/sdk/issues/25487
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
main() {
var f = /*info:INFERRED_TYPE_CLOSURE*/() {
return /*info:INFERRED_TYPE_CLOSURE*/(int x) { return 2.0 * x; };
};
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → (int) → double');
}
@@ -319,22 +326,22 @@ main() {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
test1() {
List<int> o;
var y = o.map(/*info:INFERRED_TYPE_CLOSURE,info:INFERRED_TYPE_CLOSURE*/(x) { });
Iterable<int> z = y;
}
''');
- var f = mainUnit.functions[0].localVariables[1];
- expect(f.type.toString(), 'Iterable<Null>');
+ var y = findLocalVariable(unit, 'y');
+ expect(y.type.toString(), 'Iterable<Null>');
}
test_blockBodiedLambdas_syncStar() async {
if (!mayCheckTypesOfLocals) {
return;
}
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
main() {
var f = /*info:INFERRED_TYPE_CLOSURE*/() sync* {
yield 1;
@@ -344,7 +351,7 @@ main() {
Iterable<int> h = /*info:ASSIGNMENT_CAST*/f();
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Iterable<num>');
}
@@ -474,7 +481,7 @@ void main() {
test_constructors_inferenceFBounded() async {
var errors = 'error:COULD_NOT_INFER,error:COULD_NOT_INFER';
// if (hasExtraTaskModelPass) errors = '$errors,$errors';
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class Clonable<T> {}
class Pair<T extends Clonable<T>, U extends Clonable<U>> {
@@ -489,12 +496,12 @@ main() {
final x = new /*$errors*/Pair._();
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'Pair<Clonable<dynamic>, Clonable<dynamic>>');
}
test_constructors_inferFromArguments() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
T t;
C(this.t);
@@ -516,16 +523,14 @@ main() {
x.t = /*error:INVALID_ASSIGNMENT*/'hello';
}
''');
- var vars = unit.functions[0].localVariables;
- expect(vars[0].type.toString(), 'C<int>');
- expect(vars.firstWhere((e) => e.name == 'c_int').type.toString(), 'C<int>');
- expect(vars.firstWhere((e) => e.name == 'c_num').type.toString(), 'C<num>');
- expect(vars.firstWhere((e) => e.name == 'c_dynamic').type.toString(),
- 'C<dynamic>');
+ expect(findLocalVariable(unit, 'x').type.toString(), 'C<int>');
+ expect(findLocalVariable(unit, 'c_int').type.toString(), 'C<int>');
+ expect(findLocalVariable(unit, 'c_num').type.toString(), 'C<num>');
+ expect(findLocalVariable(unit, 'c_dynamic').type.toString(), 'C<dynamic>');
}
test_constructors_inferFromArguments_argumentNotAssignable() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class A {}
typedef T F<T>();
@@ -541,12 +546,12 @@ main() {
var x = /*info:INFERRED_TYPE_ALLOCATION*/new /*error:COULD_NOT_INFER*/C(myF);
}
''');
- var x = unit.functions[1].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<NotA>');
}
test_constructors_inferFromArguments_const() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
final T t;
const C(this.t);
@@ -556,7 +561,7 @@ main() {
var x = /*info:INFERRED_TYPE_ALLOCATION*/const C(42);
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<int>');
}
@@ -594,16 +599,16 @@ main() {
}
test_constructors_inferFromArguments_factory() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
T t;
C._();
factory C(T t) {
- var x = new C<T>._();
- x.t = t;
- return x;
+ var c = new C<T>._();
+ c.t = t;
+ return c;
}
}
@@ -613,7 +618,7 @@ main() {
x.t = /*error:INVALID_ASSIGNMENT*/'hello';
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<int>');
}
@@ -629,7 +634,7 @@ class A<T> {
}
test_constructors_inferFromArguments_named() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
T t;
C.named(List<T> t);
@@ -641,20 +646,20 @@ main() {
x.t = /*error:INVALID_ASSIGNMENT*/'hello';
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<int>');
}
test_constructors_inferFromArguments_namedFactory() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
T t;
C();
factory C.named(T t) {
- var x = new C<T>();
- x.t = t;
- return x;
+ var c = new C<T>();
+ c.t = t;
+ return c;
}
}
@@ -664,12 +669,12 @@ main() {
x.t = /*error:INVALID_ASSIGNMENT*/'hello';
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<int>');
}
test_constructors_inferFromArguments_redirecting() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
T t;
C(this.t);
@@ -682,15 +687,15 @@ main() {
x.t = /*error:INVALID_ASSIGNMENT*/'hello';
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<int>');
}
test_constructors_inferFromArguments_redirectingFactory() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
abstract class C<T> {
T get t;
- void set t(T x);
+ void set t(T t);
factory C(T t) = CImpl<T>;
}
@@ -705,7 +710,7 @@ main() {
x.t = /*error:INVALID_ASSIGNMENT*/'hello';
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'C<int>');
}
@@ -722,14 +727,14 @@ class Pair<T, U> {
}
test_constructors_tooManyPositionalArguments() async {
- var unit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
class A<T> {}
main() {
var a = new A/*error:EXTRA_POSITIONAL_ARGUMENTS*/(42);
}
''');
- var vars = unit.functions[0].localVariables;
- expect(vars[0].type.toString(), 'A<dynamic>');
+ var a = findLocalVariable(unit, 'a');
+ expect(a.type.toString(), 'A<dynamic>');
}
test_doNotInferOverriddenFieldsThatExplicitlySayDynamic_infer() async {
@@ -2366,7 +2371,7 @@ main() {
}
test_genericMethods_usesGreatestLowerBound() async {
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
typedef Iterable<num> F(int x);
typedef List<int> G(double x);
@@ -2376,12 +2381,12 @@ main() {
var v = generic((F f) => null, (G g) => null);
}
''');
- var v = mainUnit.functions[1].localVariables[0];
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), '(num) → List<int>');
}
test_genericMethods_usesGreatestLowerBound_comment() async {
- var mainUnit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
typedef Iterable<num> F(int x);
typedef List<int> G(double x);
@@ -2391,7 +2396,7 @@ main() {
var v = generic((F f) => null, (G g) => null);
}
''');
- var v = mainUnit.functions[1].localVariables[0];
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), '(num) → List<int>');
}
@@ -2883,7 +2888,7 @@ test1() {
}
test_inferGenericMethodType_named() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
T m<T>(int a, {String b, T c}) => null;
}
@@ -2891,12 +2896,12 @@ main() {
var y = new C().m(1, b: 'bbb', c: 2.0);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'double');
}
test_inferGenericMethodType_named_comment() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
/*=T*/ m/*<T>*/(int a, {String b, /*=T*/ c}) => null;
}
@@ -2904,12 +2909,12 @@ main() {
var y = new C().m(1, b: 'bbb', c: 2.0);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'double');
}
test_inferGenericMethodType_positional() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
T m<T>(int a, [T b]) => null;
}
@@ -2917,12 +2922,12 @@ main() {
var y = new C().m(1, 2.0);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'double');
}
test_inferGenericMethodType_positional2() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
T m<T>(int a, [String b, T c]) => null;
}
@@ -2930,12 +2935,12 @@ main() {
var y = new C().m(1, 'bbb', 2.0);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'double');
}
test_inferGenericMethodType_positional2_comment() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
/*=T*/ m/*<T>*/(int a, [String b, /*=T*/ c]) => null;
}
@@ -2943,12 +2948,12 @@ main() {
var y = new C().m(1, 'bbb', 2.0);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'double');
}
test_inferGenericMethodType_positional_comment() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
/*=T*/ m/*<T>*/(int a, [/*=T*/ b]) => null;
}
@@ -2956,12 +2961,12 @@ main() {
var y = new C().m(1, 2.0);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'double');
}
test_inferGenericMethodType_required() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
T m<T>(T x) => x;
}
@@ -2969,12 +2974,12 @@ main() {
var y = new C().m(42);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'int');
}
test_inferGenericMethodType_required_comment() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
/*=T*/ m/*<T>*/(/*=T*/ x) => x;
}
@@ -2982,7 +2987,7 @@ main() {
var y = new C().m(42);
}
''');
- var y = unit.functions[0].localVariables[0];
+ var y = findLocalVariable(unit, 'y');
expect(y.type.toString(), 'int');
}
@@ -3120,12 +3125,12 @@ class Foo {
}
test_inferredType_blockClosure_noArgs_noReturn() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var f = /*info:INFERRED_TYPE_CLOSURE*/() {};
}
''');
- var f = mainUnit.functions[0].localVariables[0];
+ var f = findLocalVariable(unit, 'f');
expect(f.type.toString(), '() → Null');
}
@@ -3170,7 +3175,7 @@ var x = c*c;
}
test_inferredType_customIndexOp() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
bool operator[](int index) => true;
}
@@ -3179,13 +3184,13 @@ main() {
var x = c[0];
}
''');
- var x = mainUnit.functions[0].localVariables[1];
+ var x = findLocalVariable(unit, 'x');
expect(x.name, 'x');
expect(x.type.toString(), 'bool');
}
test_inferredType_customIndexOp_viaInterface() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class I {
bool operator[](int index) => true;
}
@@ -3195,7 +3200,7 @@ main() {
var x = c[0];
}
''');
- var x = mainUnit.functions[0].localVariables[1];
+ var x = findLocalVariable(unit, 'x');
expect(x.name, 'x');
expect(x.type.toString(), 'bool');
}
@@ -3835,13 +3840,13 @@ A v = null;
}
test_instantiateToBounds_invokeConstructor_noBound() async {
- var unit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {}
main() {
var v = new C();
}
''');
- var v = unit.functions[0].localVariables[0];
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'C<dynamic>');
}
@@ -3931,13 +3936,13 @@ var x = /*info:INFERRED_TYPE_LITERAL*/[null];
if (!mayCheckTypesOfLocals) {
return;
}
- var unit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
test1() {
var x = /*info:INFERRED_TYPE_LITERAL*/[null];
x.add(/*error:INVALID_CAST_LITERAL*/42);
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'List<Null>');
}
@@ -3993,13 +3998,13 @@ test2() {
if (!mayCheckTypesOfLocals) {
return;
}
- var unit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
test1() {
var x = /*info:INFERRED_TYPE_LITERAL*/{ null: null };
x[/*error:INVALID_CAST_LITERAL*/3] = /*error:INVALID_CAST_LITERAL*/'z';
}
''');
- var x = unit.functions[0].localVariables[0];
+ var x = findLocalVariable(unit, 'x');
expect(x.type.toString(), 'Map<Null, Null>');
}
@@ -4126,13 +4131,13 @@ main() {
}
''');
// Don't do anything if we already have a context type.
- var unit = await checkFileElement(r'''
+ var unit = await checkFile(r'''
main() {
List<int> x;
List<num> y = x ?? /*info:INFERRED_TYPE_LITERAL*/[];
}
''');
- var y = unit.functions[0].localVariables[1];
+ var y = findLocalVariable(unit, 'y');
expect(y.initializer.returnType.toString(), 'List<num>');
}
@@ -4312,12 +4317,12 @@ class C {
test_unsafeBlockClosureInference_closureCall() async {
// Regression test for https://github.com/dart-lang/sdk/issues/26962
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = ((x) => 1.0)(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
''');
- var v = mainUnit.functions[0].localVariables[0];
+ var v = findLocalVariable(unit, 'v');
expect(v.name, 'v');
expect(v.type.toString(), 'double');
}
@@ -4347,7 +4352,7 @@ var v = new C<int>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
test_unsafeBlockClosureInference_constructorCall_implicitTypeParam() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C<T> {
C(T x());
}
@@ -4358,7 +4363,7 @@ main() {
});
}
''');
- var v = mainUnit.functions[0].localVariables[0];
+ var v = findLocalVariable(unit, 'v');
expect(v.name, 'v');
expect(v.type.toString(), 'C<int>');
}
@@ -4508,7 +4513,7 @@ var v = (f)/*<int>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
test_unsafeBlockClosureInference_functionCall_implicitTypeParam() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = f(
/*info:INFERRED_TYPE_CLOSURE*/() {
@@ -4517,13 +4522,12 @@ main() {
}
List<T> f<T>(T g()) => <T>[g()];
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_functionCall_implicitTypeParam_comment() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = f(
/*info:INFERRED_TYPE_CLOSURE*/() {
@@ -4532,13 +4536,12 @@ main() {
}
dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_functionCall_implicitTypeParam_viaExpr() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = (f)(
/*info:INFERRED_TYPE_CLOSURE*/() {
@@ -4547,13 +4550,12 @@ main() {
}
List<T> f<T>(T g()) => <T>[g()];
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_functionCall_implicitTypeParam_viaExpr_comment() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = (f)(
/*info:INFERRED_TYPE_CLOSURE*/() {
@@ -4562,60 +4564,55 @@ main() {
}
dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_functionCall_noTypeParam() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = f(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
double f(x) => 1.0;
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'double');
}
test_unsafeBlockClosureInference_functionCall_noTypeParam_viaExpr() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = (f)(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
double f(x) => 1.0;
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'double');
}
test_unsafeBlockClosureInference_inList_dynamic() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = <dynamic>[/*info:INFERRED_TYPE_CLOSURE*/() { return 1; }];
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<dynamic>');
}
test_unsafeBlockClosureInference_inList_typed() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
typedef int F();
main() {
var v = <F>[/*info:INFERRED_TYPE_CLOSURE*/() { return 1; }];
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<() → int>');
}
test_unsafeBlockClosureInference_inList_untyped() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = /*info:INFERRED_TYPE_LITERAL*/[
/*info:INFERRED_TYPE_CLOSURE*/() {
@@ -4623,36 +4620,33 @@ main() {
}];
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<() → int>');
}
test_unsafeBlockClosureInference_inMap_dynamic() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = <int, dynamic>{1: /*info:INFERRED_TYPE_CLOSURE*/() { return 1; }};
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'Map<int, dynamic>');
}
test_unsafeBlockClosureInference_inMap_typed() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
typedef int F();
main() {
var v = <int, F>{1: /*info:INFERRED_TYPE_CLOSURE*/() { return 1; }};
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'Map<int, () → int>');
}
test_unsafeBlockClosureInference_inMap_untyped() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
main() {
var v = /*info:INFERRED_TYPE_LITERAL*/{
1: /*info:INFERRED_TYPE_CLOSURE*/() {
@@ -4660,13 +4654,12 @@ main() {
}};
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'Map<int, () → int>');
}
test_unsafeBlockClosureInference_methodCall_explicitDynamicParam() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
List<T> f<T>(T g()) => <T>[g()];
}
@@ -4674,13 +4667,12 @@ main() {
var v = new C().f<dynamic>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<dynamic>');
}
test_unsafeBlockClosureInference_methodCall_explicitDynamicParam_comment() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
}
@@ -4688,13 +4680,12 @@ main() {
var v = new C().f/*<dynamic>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<dynamic>');
}
test_unsafeBlockClosureInference_methodCall_explicitTypeParam() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
List<T> f<T>(T g()) => <T>[g()];
}
@@ -4702,13 +4693,12 @@ main() {
var v = new C().f<int>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_methodCall_explicitTypeParam_comment() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
}
@@ -4716,13 +4706,12 @@ main() {
var v = new C().f/*<int>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_methodCall_implicitTypeParam() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
List<T> f<T>(T g()) => <T>[g()];
}
@@ -4733,13 +4722,12 @@ main() {
});
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
test_unsafeBlockClosureInference_methodCall_implicitTypeParam_comment() async {
- var mainUnit = await checkFileElement('''
+ var unit = await checkFile('''
class C {
dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
}
@@ -4750,8 +4738,7 @@ main() {
});
}
''');
- var v = mainUnit.functions[0].localVariables[0];
- expect(v.name, 'v');
+ var v = findLocalVariable(unit, 'v');
expect(v.type.toString(), 'List<int>');
}
« no previous file with comments | « no previous file | pkg/analyzer/test/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698