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

Unified Diff: tests/compiler/dart2js/cpa_inference_test.dart

Issue 17759007: First pass at asynchronous input loading in dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments Created 7 years, 3 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
Index: tests/compiler/dart2js/cpa_inference_test.dart
diff --git a/tests/compiler/dart2js/cpa_inference_test.dart b/tests/compiler/dart2js/cpa_inference_test.dart
index bbe7d385615fc5392dab33b4536bff1e0c4fc2fe..ab3b4bed5e1c1cea1b0ed33c558969994ca4f6a3 100644
--- a/tests/compiler/dart2js/cpa_inference_test.dart
+++ b/tests/compiler/dart2js/cpa_inference_test.dart
@@ -2,7 +2,9 @@
// 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 'dart:async';
import "package:expect/expect.dart";
+import "package:async_helper/async_helper.dart";
import '../../../sdk/lib/_internal/compiler/implementation/source_file.dart';
import '../../../sdk/lib/_internal/compiler/implementation/types/types.dart';
import '../../../sdk/lib/_internal/compiler/implementation/types/concrete_types_inferrer.dart';
@@ -145,7 +147,7 @@ class AnalysisResult {
const String CORELIB = r'''
print(var obj) {}
- abstract class num {
+ abstract class num {
num operator +(num x);
num operator *(num x);
num operator -(num x);
@@ -174,7 +176,7 @@ const String CORELIB = r'''
class Dynamic_ {}
bool identical(Object a, Object b) {}''';
-AnalysisResult analyze(String code, {int maxConcreteTypeSize: 1000}) {
+Future<AnalysisResult> analyze(String code, {int maxConcreteTypeSize: 1000}) {
Uri uri = new Uri(scheme: 'source');
MockCompiler compiler = new MockCompiler(
coreSource: CORELIB,
@@ -182,8 +184,9 @@ AnalysisResult analyze(String code, {int maxConcreteTypeSize: 1000}) {
maxConcreteTypeSize: maxConcreteTypeSize);
compiler.sourceFiles[uri.toString()] = new SourceFile(uri.toString(), code);
compiler.typesTask.concreteTypesInferrer.testMode = true;
- compiler.runCompiler(uri);
- return new AnalysisResult(compiler);
+ return compiler.runCompiler(uri).then((_) {
+ return new AnalysisResult(compiler);
+ });
}
testDynamicBackDoor() {
@@ -193,8 +196,9 @@ testDynamicBackDoor() {
x;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasUnknownType('x');
+ return analyze(source).then((result) {
+ result.checkNodeHasUnknownType('x');
+ });
}
testVariableDeclaration() {
@@ -206,9 +210,10 @@ testVariableDeclaration() {
v1; v2;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('v1', [result.nullType]);
- result.checkNodeHasType('v2', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('v1', [result.nullType]);
+ result.checkNodeHasType('v2', [result.int]);
+ });
}
testLiterals() {
@@ -222,12 +227,13 @@ testLiterals() {
v1; v2; v3; v4; v5;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('v1', [result.int]);
- result.checkNodeHasType('v2', [result.double]);
- result.checkNodeHasType('v3', [result.string]);
- result.checkNodeHasType('v4', [result.bool]);
- result.checkNodeHasType('v5', [result.nullType]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('v1', [result.int]);
+ result.checkNodeHasType('v2', [result.double]);
+ result.checkNodeHasType('v3', [result.string]);
+ result.checkNodeHasType('v4', [result.bool]);
+ result.checkNodeHasType('v5', [result.nullType]);
+ });
}
testRedefinition() {
@@ -238,8 +244,9 @@ testRedefinition() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.string]);
+ });
}
testIfThenElse() {
@@ -254,8 +261,9 @@ testIfThenElse() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.string, result.bool]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.string, result.bool]);
+ });
}
testTernaryIf() {
@@ -266,8 +274,9 @@ testTernaryIf() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.string, result.bool]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.string, result.bool]);
+ });
}
testWhile() {
@@ -284,12 +293,13 @@ testWhile() {
foo; bar;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType(
- 'foo',
- [result.base('A'), result.base('B'), result.base('C')]);
- // Check that the condition is evaluated.
- result.checkNodeHasType('bar', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType(
+ 'foo',
+ [result.base('A'), result.base('B'), result.base('C')]);
+ // Check that the condition is evaluated.
+ result.checkNodeHasType('bar', [result.int]);
+ });
}
testDoWhile() {
@@ -306,12 +316,13 @@ testDoWhile() {
foo; bar;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType(
- 'foo',
- [result.base('A'), result.base('B'), result.base('C')]);
- // Check that the condition is evaluated.
- result.checkNodeHasType('bar', [result.int]);
+ return analyze(source).then((AnalysisResult result) {
+ result.checkNodeHasType(
+ 'foo',
+ [result.base('A'), result.base('B'), result.base('C')]);
+ // Check that the condition is evaluated.
+ result.checkNodeHasType('bar', [result.int]);
+ });
}
testFor1() {
@@ -327,10 +338,11 @@ testFor1() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType(
- 'foo',
- [result.base('A'), result.base('B'), result.base('C')]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType(
+ 'foo',
+ [result.base('A'), result.base('B'), result.base('C')]);
+ });
}
testFor2() {
@@ -346,10 +358,11 @@ testFor2() {
foo; bar;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.base('A'), result.base('B')]);
- // Check that the condition is evaluated.
- result.checkNodeHasType('bar', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.base('A'), result.base('B')]);
+ // Check that the condition is evaluated.
+ result.checkNodeHasType('bar', [result.int]);
+ });
}
testFor3() {
@@ -363,8 +376,9 @@ testFor3() {
i;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('i', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('i', [result.int]);
+ });
}
testForIn() {
@@ -399,8 +413,10 @@ testForIn() {
res;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('res', [result.int, result.string, result.nullType]);
+ return analyze(source).then((AnalysisResult result) {
+ result.checkNodeHasType('res',
+ [result.int, result.string, result.nullType]);
+ });
}
testToplevelVariable() {
@@ -409,15 +425,16 @@ testToplevelVariable() {
class A {
f() => top;
}
- main() {
+ main() {
var foo = top;
var bar = new A().f();
foo; bar;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.string]);
- result.checkNodeHasType('bar', [result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.string]);
+ result.checkNodeHasType('bar', [result.string]);
+ });
}
testNonRecusiveFunction() {
@@ -425,8 +442,9 @@ testNonRecusiveFunction() {
f(x, y) => true ? x : y;
main() { var foo = f(42, "abc"); foo; }
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int, result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int, result.string]);
+ });
}
testRecusiveFunction() {
@@ -437,18 +455,20 @@ testRecusiveFunction() {
}
main() { var foo = f(42); foo; }
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int, result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int, result.string]);
+ });
}
testMutuallyRecusiveFunction() {
final String source = r"""
f() => true ? 42 : g();
- g() => true ? "abc" : f();
+ g() => true ? "abc" : f();
main() { var foo = f(); foo; }
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int, result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int, result.string]);
+ });
}
testSimpleSend() {
@@ -463,7 +483,7 @@ testSimpleSend() {
f(x) => 3.14;
}
class D {
- var f; // we check that this field is ignored in calls to dynamic.f()
+ var f; // we check that this field is ignored in calls to dynamic.f()
D(this.f);
}
main() {
@@ -473,9 +493,10 @@ testSimpleSend() {
foo; bar;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int]);
- result.checkNodeHasType('bar', [result.int, result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int]);
+ result.checkNodeHasType('bar', [result.int, result.string]);
+ });
}
testSendToClosureField() {
@@ -490,8 +511,9 @@ testSendToClosureField() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int]);
+ });
}
testSendToThis1() {
@@ -506,8 +528,9 @@ testSendToThis1() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int]);
+ });
}
testSendToThis2() {
@@ -523,8 +546,9 @@ testSendToThis2() {
x;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.base('B')]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.base('B')]);
+ });
}
testSendToThis3() {
@@ -541,8 +565,9 @@ testSendToThis3() {
x;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.string]);
+ return analyze(source).then((AnalysisResult result) {
+ result.checkNodeHasType('x', [result.string]);
+ });
}
testConstructor() {
@@ -556,11 +581,12 @@ testConstructor() {
new A(true, null);
}
""";
- AnalysisResult result = analyze(source);
- result.checkFieldHasType('A', 'x', [result.int, result.bool]);
- result.checkFieldHasType('A', 'y', [result.string, result.nullType]);
- // TODO(polux): we can be smarter and infer {string} for z
- result.checkFieldHasType('A', 'z', [result.string, result.nullType]);
+ return analyze(source).then((result) {
+ result.checkFieldHasType('A', 'x', [result.int, result.bool]);
+ result.checkFieldHasType('A', 'y', [result.string, result.nullType]);
+ // TODO(polux): we can be smarter and infer {string} for z
+ result.checkFieldHasType('A', 'z', [result.string, result.nullType]);
+ });
}
testGetters() {
@@ -586,12 +612,13 @@ testGetters() {
foo; bar; baz; qux; quux;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int]);
- result.checkNodeHasType('bar', [result.int]);
- result.checkNodeHasType('baz', [result.int]);
- result.checkNodeHasType('qux', []);
- result.checkNodeHasType('quux', [result.int, result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int]);
+ result.checkNodeHasType('bar', [result.int]);
+ result.checkNodeHasType('baz', [result.int]);
+ result.checkNodeHasType('qux', []);
+ result.checkNodeHasType('quux', [result.int, result.string]);
+ });
}
testSetters() {
@@ -617,20 +644,21 @@ testSetters() {
"__dynamic_for_test".y = 3.14;
}
""";
- AnalysisResult result = analyze(source);
- result.checkFieldHasType('B', 'x',
- [result.int, // new B(42)
- result.nullType]); // dynamic.x = null
- result.checkFieldHasType('A', 'x',
- [result.int, // new A(42, ...)
- result.string, // a.x = 'abc'
- result.bool, // a.y = true
- result.nullType, // dynamic.x = null
- result.double]); // dynamic.y = 3.14
- result.checkFieldHasType('A', 'w',
- [result.int, // new A(..., 42)
- result.bool, // a.y = true
- result.double]); // dynamic.y = double
+ return analyze(source).then((result) {
+ result.checkFieldHasType('B', 'x',
+ [result.int, // new B(42)
+ result.nullType]); // dynamic.x = null
+ result.checkFieldHasType('A', 'x',
+ [result.int, // new A(42, ...)
+ result.string, // a.x = 'abc'
+ result.bool, // a.y = true
+ result.nullType, // dynamic.x = null
+ result.double]); // dynamic.y = 3.14
+ result.checkFieldHasType('A', 'w',
+ [result.int, // new A(..., 42)
+ result.bool, // a.y = true
+ result.double]); // dynamic.y = double
+ });
}
testOptionalNamedParameters() {
@@ -695,29 +723,30 @@ testOptionalNamedParameters() {
test.f3(1, z: 2); // non-existing named parameter
}
""";
- AnalysisResult result = analyze(source);
-
- final foo = result.base('Foo');
- final nil = result.nullType;
-
- result.checkFieldHasType('A', 'x', [result.int, result.string]);
- result.checkFieldHasType('A', 'y', [nil]);
- result.checkFieldHasType('A', 'z', [nil, result.double]);
- result.checkFieldHasType('A', 'w', [nil, result.bool]);
- result.checkFieldHasType('Test', 'a', [foo, result.int, result.string]);
- result.checkFieldHasType('Test', 'b', [foo, nil]);
- result.checkFieldHasType('Test', 'c', [foo, nil, result.double]);
- result.checkFieldHasType('Test', 'd', [foo, nil, result.bool]);
-
- result.checkFieldHasType('B', 'x', [result.string]);
- result.checkFieldHasType('B', 'y', [result.bool]);
- result.checkFieldHasType('Test', 'e', [foo, result.string]);
- result.checkFieldHasType('Test', 'f', [foo, result.bool]);
-
- result.checkFieldHasType('C', 'x', [result.string]);
- result.checkFieldHasType('C', 'y', [result.bool]);
- result.checkFieldHasType('Test', 'g', [foo, result.string]);
- result.checkFieldHasType('Test', 'h', [foo, result.bool]);
+ return analyze(source).then((result) {
+
+ final foo = result.base('Foo');
+ final nil = result.nullType;
+
+ result.checkFieldHasType('A', 'x', [result.int, result.string]);
+ result.checkFieldHasType('A', 'y', [nil]);
+ result.checkFieldHasType('A', 'z', [nil, result.double]);
+ result.checkFieldHasType('A', 'w', [nil, result.bool]);
+ result.checkFieldHasType('Test', 'a', [foo, result.int, result.string]);
+ result.checkFieldHasType('Test', 'b', [foo, nil]);
+ result.checkFieldHasType('Test', 'c', [foo, nil, result.double]);
+ result.checkFieldHasType('Test', 'd', [foo, nil, result.bool]);
+
+ result.checkFieldHasType('B', 'x', [result.string]);
+ result.checkFieldHasType('B', 'y', [result.bool]);
+ result.checkFieldHasType('Test', 'e', [foo, result.string]);
+ result.checkFieldHasType('Test', 'f', [foo, result.bool]);
+
+ result.checkFieldHasType('C', 'x', [result.string]);
+ result.checkFieldHasType('C', 'y', [result.bool]);
+ result.checkFieldHasType('Test', 'g', [foo, result.string]);
+ result.checkFieldHasType('Test', 'h', [foo, result.bool]);
+ });
}
testOptionalPositionalParameters() {
@@ -767,24 +796,25 @@ testOptionalPositionalParameters() {
test.f2(1, 2, 3); // too many arguments
}
""";
- AnalysisResult result = analyze(source);
-
- final foo = result.base('Foo');
- final nil = result.nullType;
-
- result.checkFieldHasType('A', 'x', [result.int, result.string]);
- result.checkFieldHasType('A', 'y', [nil, result.bool]);
- result.checkFieldHasType('A', 'z', [nil, result.double]);
- result.checkFieldHasType('A', 'w', [nil]);
- result.checkFieldHasType('Test', 'a', [foo, result.int, result.string]);
- result.checkFieldHasType('Test', 'b', [foo, nil, result.bool]);
- result.checkFieldHasType('Test', 'c', [foo, nil, result.double]);
- result.checkFieldHasType('Test', 'd', [foo, nil]);
-
- result.checkFieldHasType('B', 'x', [result.string]);
- result.checkFieldHasType('B', 'y', [result.bool]);
- result.checkFieldHasType('Test', 'e', [foo, result.string]);
- result.checkFieldHasType('Test', 'f', [foo, result.bool]);
+ return analyze(source).then((result) {
+
+ final foo = result.base('Foo');
+ final nil = result.nullType;
+
+ result.checkFieldHasType('A', 'x', [result.int, result.string]);
+ result.checkFieldHasType('A', 'y', [nil, result.bool]);
+ result.checkFieldHasType('A', 'z', [nil, result.double]);
+ result.checkFieldHasType('A', 'w', [nil]);
+ result.checkFieldHasType('Test', 'a', [foo, result.int, result.string]);
+ result.checkFieldHasType('Test', 'b', [foo, nil, result.bool]);
+ result.checkFieldHasType('Test', 'c', [foo, nil, result.double]);
+ result.checkFieldHasType('Test', 'd', [foo, nil]);
+
+ result.checkFieldHasType('B', 'x', [result.string]);
+ result.checkFieldHasType('B', 'y', [result.bool]);
+ result.checkFieldHasType('Test', 'e', [foo, result.string]);
+ result.checkFieldHasType('Test', 'f', [foo, result.bool]);
+ });
}
testListLiterals() {
@@ -799,10 +829,11 @@ testListLiterals() {
x; y;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.growableList]);
- result.checkNodeHasType('y', [result.growableList]);
- result.checkFieldHasType('A', 'x', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.growableList]);
+ result.checkNodeHasType('y', [result.growableList]);
+ result.checkFieldHasType('A', 'x', [result.int]);
+ });
}
testMapLiterals() {
@@ -817,10 +848,11 @@ testMapLiterals() {
x; y;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.map]);
- result.checkNodeHasType('y', [result.map]);
- result.checkFieldHasType('A', 'x', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.map]);
+ result.checkNodeHasType('y', [result.map]);
+ result.checkFieldHasType('A', 'x', [result.int]);
+ });
}
testReturn() {
@@ -833,9 +865,10 @@ testReturn() {
x; y;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.int, result.string]);
- result.checkNodeHasType('y', [result.nullType]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.int, result.string]);
+ result.checkNodeHasType('y', [result.nullType]);
+ });
}
testNoReturn() {
@@ -848,9 +881,10 @@ testNoReturn() {
x; y;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.int, result.nullType]);
- result.checkNodeHasType('y', [result.nullType]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.int, result.nullType]);
+ result.checkNodeHasType('y', [result.nullType]);
+ });
}
testArithmeticOperators() {
@@ -872,21 +906,22 @@ testArithmeticOperators() {
a; b; c; d; e; f; g; h; i; j; k; l;
}""";
}
- for (String op in ['+', '*', '-']) {
- AnalysisResult result = analyze(source(op));
- result.checkNodeHasType('a', [result.int]);
- result.checkNodeHasType('b', [result.num]);
- result.checkNodeHasType('c', [result.num]);
- result.checkNodeHasType('d', [result.double]);
- result.checkNodeHasType('e', [result.num]);
- result.checkNodeHasType('f', [result.num]);
- result.checkNodeHasType('g', [result.num]);
- result.checkNodeHasType('h', [result.num]);
- result.checkNodeHasType('i', [result.int]);
- result.checkNodeHasType('j', [result.int]);
- result.checkNodeHasType('k', [result.double]);
- result.checkNodeHasType('l', [result.double]);
- }
+ return Future.forEach(['+', '*', '-'], (String op) {
+ return analyze(source(op)).then((result) {
+ result.checkNodeHasType('a', [result.int]);
+ result.checkNodeHasType('b', [result.num]);
+ result.checkNodeHasType('c', [result.num]);
+ result.checkNodeHasType('d', [result.double]);
+ result.checkNodeHasType('e', [result.num]);
+ result.checkNodeHasType('f', [result.num]);
+ result.checkNodeHasType('g', [result.num]);
+ result.checkNodeHasType('h', [result.num]);
+ result.checkNodeHasType('i', [result.int]);
+ result.checkNodeHasType('j', [result.int]);
+ result.checkNodeHasType('k', [result.double]);
+ result.checkNodeHasType('l', [result.double]);
+ });
+ });
}
testBooleanOperators() {
@@ -900,13 +935,14 @@ testBooleanOperators() {
a; b; c; d;
}""";
}
- for (String op in ['&&', '||']) {
- AnalysisResult result = analyze(source(op));
- result.checkNodeHasType('a', [result.bool]);
- result.checkNodeHasType('b', [result.bool]);
- result.checkNodeHasType('c', [result.bool]);
- result.checkNodeHasType('d', [result.bool]);
- }
+ return Future.forEach(['&&', '||'], (String op) {
+ return analyze(source(op)).then((result) {
+ result.checkNodeHasType('a', [result.bool]);
+ result.checkNodeHasType('b', [result.bool]);
+ result.checkNodeHasType('c', [result.bool]);
+ result.checkNodeHasType('d', [result.bool]);
+ });
+ });
}
testBooleanOperatorsShortCirtcuit() {
@@ -918,10 +954,11 @@ testBooleanOperatorsShortCirtcuit() {
x;
}""";
}
- for (String op in ['&&', '||']) {
- AnalysisResult result = analyze(source(op));
- result.checkNodeHasType('x', [result.nullType, result.int]);
- }
+ return Future.forEach(['&&', '||'], (String op) {
+ return analyze(source(op)).then((AnalysisResult result) {
+ result.checkNodeHasType('x', [result.nullType, result.int]);
+ });
+ });
}
testOperators() {
@@ -936,9 +973,10 @@ testOperators() {
x; y;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.int]);
- result.checkNodeHasType('y', [result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.int]);
+ result.checkNodeHasType('y', [result.string]);
+ });
}
testSetIndexOperator() {
@@ -953,10 +991,11 @@ testSetIndexOperator() {
x;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.string]);
- result.checkFieldHasType('A', 'witness1', [result.int, result.nullType]);
- result.checkFieldHasType('A', 'witness2', [result.string, result.nullType]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.string]);
+ result.checkFieldHasType('A', 'witness1', [result.int, result.nullType]);
+ result.checkFieldHasType('A', 'witness2', [result.string, result.nullType]);
+ });
}
testCompoundOperators1() {
@@ -981,13 +1020,14 @@ testCompoundOperators1() {
x1; x2; x3; x4; x5; x6;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x1', [result.int]);
- result.checkNodeHasType('x2', [result.int]);
- result.checkNodeHasType('x3', [result.int]);
- result.checkNodeHasType('x4', [result.string]);
- result.checkNodeHasType('x5', [result.string]);
- result.checkNodeHasType('x6', [result.string]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x1', [result.int]);
+ result.checkNodeHasType('x2', [result.int]);
+ result.checkNodeHasType('x3', [result.int]);
+ result.checkNodeHasType('x4', [result.string]);
+ result.checkNodeHasType('x5', [result.string]);
+ result.checkNodeHasType('x6', [result.string]);
+ });
}
@@ -1010,16 +1050,17 @@ testCompoundOperators2() {
main () {
var a = new A(1, 1);
a.x++;
- a.y++;
+ a.y++;
}
""";
- AnalysisResult result = analyze(source);
- result.checkFieldHasType('A', 'xx', [result.int]);
- result.checkFieldHasType('A', 'yy', [result.int]);
- result.checkFieldHasType('A', 'witness1', [result.string, result.nullType]);
- result.checkFieldHasType('A', 'witness2', [result.string, result.nullType]);
- result.checkFieldHasType('A', 'witness3', [result.string, result.nullType]);
- result.checkFieldHasType('A', 'witness4', [result.string, result.nullType]);
+ return analyze(source).then((result) {
+ result.checkFieldHasType('A', 'xx', [result.int]);
+ result.checkFieldHasType('A', 'yy', [result.int]);
+ result.checkFieldHasType('A', 'witness1', [result.string, result.nullType]);
+ result.checkFieldHasType('A', 'witness2', [result.string, result.nullType]);
+ result.checkFieldHasType('A', 'witness3', [result.string, result.nullType]);
+ result.checkFieldHasType('A', 'witness4', [result.string, result.nullType]);
+ });
}
testInequality() {
@@ -1038,11 +1079,12 @@ testInequality() {
foo; bar; baz;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.bool]);
- result.checkNodeHasType('bar', [result.bool]);
- result.checkNodeHasType('baz', []);
- result.checkFieldHasType('A', 'witness', [result.string, result.nullType]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.bool]);
+ result.checkNodeHasType('bar', [result.bool]);
+ result.checkNodeHasType('baz', []);
+ result.checkFieldHasType('A', 'witness', [result.string, result.nullType]);
+ });
}
testFieldInitialization1() {
@@ -1058,10 +1100,11 @@ testFieldInitialization1() {
new B();
}
""";
- AnalysisResult result = analyze(source);
- result.checkFieldHasType('A', 'x', [result.nullType]);
- result.checkFieldHasType('A', 'y', [result.int]);
- result.checkFieldHasType('B', 'z', [result.string]);
+ return analyze(source).then((result) {
+ result.checkFieldHasType('A', 'x', [result.nullType]);
+ result.checkFieldHasType('A', 'y', [result.int]);
+ result.checkFieldHasType('B', 'z', [result.string]);
+ });
}
testFieldInitialization2() {
@@ -1074,8 +1117,9 @@ testFieldInitialization2() {
new A();
}
""";
- AnalysisResult result = analyze(source);
- result.checkFieldHasType('A', 'x', [result.int]);
+ return analyze(source).then((result) {
+ result.checkFieldHasType('A', 'x', [result.int]);
+ });
}
testFieldInitialization3() {
@@ -1095,15 +1139,16 @@ testFieldInitialization3() {
foo; bar;
}
""";
- AnalysisResult result = analyze(source);
- // checks that B.B is set as a reader of A.x
- result.checkFieldHasType('B', 'x', [result.nullType, result.string]);
- // checks that B.B is set as a caller of f
- result.checkFieldHasType('B', 'y', [result.nullType, result.string]);
- // checks that readers of x are notified by changes in x's type
- result.checkNodeHasType('foo', [result.nullType, result.string]);
- // checks that readers of y are notified by changes in y's type
- result.checkNodeHasType('bar', [result.nullType, result.string]);
+ return analyze(source).then((result) {
+ // checks that B.B is set as a reader of A.x
+ result.checkFieldHasType('B', 'x', [result.nullType, result.string]);
+ // checks that B.B is set as a caller of f
+ result.checkFieldHasType('B', 'y', [result.nullType, result.string]);
+ // checks that readers of x are notified by changes in x's type
+ result.checkNodeHasType('foo', [result.nullType, result.string]);
+ // checks that readers of y are notified by changes in y's type
+ result.checkNodeHasType('bar', [result.nullType, result.string]);
+ });
}
testLists() {
@@ -1135,16 +1180,17 @@ testLists() {
var x8 = l2.removeLast();
x1; x2; x3; x4; x5; x6; x7; x8;
}""";
- AnalysisResult result = analyze(source);
- final expectedTypes = ['A', 'C', 'D', 'F', 'G'].map(result.base).toList();
- result.checkNodeHasType('x1', expectedTypes);
- result.checkNodeHasType('x2', expectedTypes);
- result.checkNodeHasType('x3', []);
- result.checkNodeHasType('x4', expectedTypes);
- result.checkNodeHasType('x5', expectedTypes);
- result.checkNodeHasType('x6', []);
- result.checkNodeHasType('x7', expectedTypes);
- result.checkNodeHasType('x8', expectedTypes);
+ return analyze(source).then((result) {
+ final expectedTypes = ['A', 'C', 'D', 'F', 'G'].map(result.base).toList();
+ result.checkNodeHasType('x1', expectedTypes);
+ result.checkNodeHasType('x2', expectedTypes);
+ result.checkNodeHasType('x3', []);
+ result.checkNodeHasType('x4', expectedTypes);
+ result.checkNodeHasType('x5', expectedTypes);
+ result.checkNodeHasType('x6', []);
+ result.checkNodeHasType('x7', expectedTypes);
+ result.checkNodeHasType('x8', expectedTypes);
+ });
}
testListWithCapacity() {
@@ -1154,8 +1200,9 @@ testListWithCapacity() {
var x = [][0];
x;
}""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.nullType]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.nullType]);
+ });
}
testEmptyList() {
@@ -1165,8 +1212,9 @@ testEmptyList() {
var x = l[0];
x;
}""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', []);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', []);
+ });
}
testSendWithWrongArity() {
@@ -1181,11 +1229,12 @@ testSendWithWrongArity() {
x; y; z; w;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', []);
- result.checkNodeHasType('y', []);
- result.checkNodeHasType('z', []);
- result.checkNodeHasType('w', []);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', []);
+ result.checkNodeHasType('y', []);
+ result.checkNodeHasType('z', []);
+ result.checkNodeHasType('w', []);
+ });
}
testBigTypesWidening1() {
@@ -1198,9 +1247,10 @@ testBigTypesWidening1() {
x; y;
}
""";
- AnalysisResult result = analyze(source, maxConcreteTypeSize: 2);
- result.checkNodeHasType('x', [result.int, result.string]);
- result.checkNodeHasUnknownType('y');
+ return analyze(source, maxConcreteTypeSize: 2).then((result) {
+ result.checkNodeHasType('x', [result.int, result.string]);
+ result.checkNodeHasUnknownType('y');
+ });
}
testBigTypesWidening2() {
@@ -1216,9 +1266,10 @@ testBigTypesWidening2() {
a.y = true;
}
""";
- AnalysisResult result = analyze(source, maxConcreteTypeSize: 2);
- result.checkFieldHasType('A', 'x', [result.int, result.string]);
- result.checkFieldHasUknownType('A', 'y');
+ return analyze(source, maxConcreteTypeSize: 2).then((result) {
+ result.checkFieldHasType('A', 'x', [result.int, result.string]);
+ result.checkFieldHasUknownType('A', 'y');
+ });
}
testDynamicIsAbsorbing() {
@@ -1233,8 +1284,9 @@ testDynamicIsAbsorbing() {
x;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasUnknownType('x');
+ return analyze(source).then((result) {
+ result.checkNodeHasUnknownType('x');
+ });
}
testJsCall() {
@@ -1279,34 +1331,35 @@ testJsCall() {
iNull; j;
}
""";
- AnalysisResult result = analyze(source);
- List maybe(List types) => new List.from(types)..add(result.nullType);
- result.checkNodeHasUnknownType('a');
- result.checkNodeHasUnknownType('b');
- final expectedCType = [result.growableList];
- result.checkNodeHasType('c', expectedCType);
- result.checkNodeHasType('cNull', maybe(expectedCType));
- final expectedDType = [result.string];
- result.checkNodeHasType('d', expectedDType);
- result.checkNodeHasType('dNull', maybe(expectedDType));
- final expectedEType = [result.int];
- result.checkNodeHasType('e', expectedEType);
- result.checkNodeHasType('eNull', maybe(expectedEType));
- final expectedFType = [result.double];
- result.checkNodeHasType('f', expectedFType);
- result.checkNodeHasType('fNull', maybe(expectedFType));
- final expectedGType = [result.num];
- result.checkNodeHasType('g', expectedGType);
- result.checkNodeHasType('gNull', maybe(expectedGType));
- final expectedHType = [result.bool];
- result.checkNodeHasType('h', expectedHType);
- result.checkNodeHasType('hNull', maybe(expectedHType));
- final expectedIType = [result.base('A'), result.base('B'),
- result.base('BB'), result.base('C'),
- result.base('D')];
- result.checkNodeHasType('i', expectedIType);
- result.checkNodeHasType('iNull', maybe(expectedIType));
- result.checkNodeHasType('j', []);
+ return analyze(source).then((result) {
+ List maybe(List types) => new List.from(types)..add(result.nullType);
+ result.checkNodeHasUnknownType('a');
+ result.checkNodeHasUnknownType('b');
+ final expectedCType = [result.growableList];
+ result.checkNodeHasType('c', expectedCType);
+ result.checkNodeHasType('cNull', maybe(expectedCType));
+ final expectedDType = [result.string];
+ result.checkNodeHasType('d', expectedDType);
+ result.checkNodeHasType('dNull', maybe(expectedDType));
+ final expectedEType = [result.int];
+ result.checkNodeHasType('e', expectedEType);
+ result.checkNodeHasType('eNull', maybe(expectedEType));
+ final expectedFType = [result.double];
+ result.checkNodeHasType('f', expectedFType);
+ result.checkNodeHasType('fNull', maybe(expectedFType));
+ final expectedGType = [result.num];
+ result.checkNodeHasType('g', expectedGType);
+ result.checkNodeHasType('gNull', maybe(expectedGType));
+ final expectedHType = [result.bool];
+ result.checkNodeHasType('h', expectedHType);
+ result.checkNodeHasType('hNull', maybe(expectedHType));
+ final expectedIType = [result.base('A'), result.base('B'),
+ result.base('BB'), result.base('C'),
+ result.base('D')];
+ result.checkNodeHasType('i', expectedIType);
+ result.checkNodeHasType('iNull', maybe(expectedIType));
+ result.checkNodeHasType('j', []);
+ });
}
testJsCallAugmentsSeenClasses() {
@@ -1316,20 +1369,23 @@ testJsCallAugmentsSeenClasses() {
x;
}
""";
- AnalysisResult result1 = analyze(source1);
- result1.checkNodeHasType('x', []);
-
- final String source2 = r"""
- import 'dart:foreign';
-
- main () {
- var x = "__dynamic_for_test".truncate();
- JS('double', 'foo');
- x;
- }
- """;
- AnalysisResult result2 = analyze(source2);
- result2.checkNodeHasType('x', [result2.int]);
+ return analyze(source1).then((AnalysisResult result) {
+ result.checkNodeHasType('x', []);
+ }).whenComplete(() {
+
+ final String source2 = r"""
+ import 'dart:foreign';
+
+ main () {
+ var x = "__dynamic_for_test".truncate();
+ JS('double', 'foo');
+ x;
+ }
+ """;
+ return analyze(source2).then((AnalysisResult result) {
+ result.checkNodeHasType('x', [result.int]);
+ });
+ });
}
testIsCheck() {
@@ -1339,8 +1395,9 @@ testIsCheck() {
x;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.bool]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.bool]);
+ });
}
testSeenClasses() {
@@ -1366,8 +1423,9 @@ testSeenClasses() {
foo;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('foo', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('foo', [result.int]);
+ });
}
testIntDoubleNum() {
@@ -1379,10 +1437,11 @@ testIntDoubleNum() {
a; b; c;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('a', [result.int]);
- result.checkNodeHasType('b', [result.double]);
- result.checkNodeHasType('c', [result.num]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('a', [result.int]);
+ result.checkNodeHasType('b', [result.double]);
+ result.checkNodeHasType('c', [result.num]);
+ });
}
testConcreteTypeToTypeMask() {
@@ -1398,46 +1457,48 @@ testConcreteTypeToTypeMask() {
new D();
}
""";
- AnalysisResult result = analyze(source);
+ return analyze(source).then((result) {
- convert(ConcreteType type) {
- return result.compiler.typesTask.concreteTypesInferrer
- .concreteTypeToTypeMask(type);
- }
+ convert(ConcreteType type) {
+ return result.compiler.typesTask.concreteTypesInferrer
+ .concreteTypeToTypeMask(type);
+ }
- final nullSingleton =
- result.compiler.typesTask.concreteTypesInferrer.singletonConcreteType(
- new NullBaseType());
+ final nullSingleton =
+ result.compiler.typesTask.concreteTypesInferrer.singletonConcreteType(
+ new NullBaseType());
- singleton(ClassElement element) {
- return result.compiler.typesTask.concreteTypesInferrer
- .singletonConcreteType(new ClassBaseType(element));
- }
+ singleton(ClassElement element) {
+ return result.compiler.typesTask.concreteTypesInferrer
+ .singletonConcreteType(new ClassBaseType(element));
+ }
- ClassElement a = findElement(result.compiler, 'A');
- ClassElement b = findElement(result.compiler, 'B');
- ClassElement c = findElement(result.compiler, 'C');
- ClassElement d = findElement(result.compiler, 'D');
+ ClassElement a = findElement(result.compiler, 'A');
+ ClassElement b = findElement(result.compiler, 'B');
+ ClassElement c = findElement(result.compiler, 'C');
+ ClassElement d = findElement(result.compiler, 'D');
- for (ClassElement cls in [a, b, c, d]) {
- Expect.equals(convert(singleton(cls)),
- new TypeMask.nonNullExact(cls.rawType));
- }
+ for (ClassElement cls in [a, b, c, d]) {
+ Expect.equals(convert(singleton(cls)),
+ new TypeMask.nonNullExact(cls.rawType));
+ }
- for (ClassElement cls in [a, b, c, d]) {
- Expect.equals(convert(singleton(cls).union(nullSingleton)),
- new TypeMask.exact(cls.rawType));
- }
+ for (ClassElement cls in [a, b, c, d]) {
+ Expect.equals(convert(singleton(cls).union(nullSingleton)),
+ new TypeMask.exact(cls.rawType));
+ }
- Expect.equals(convert(singleton(a).union(singleton(b))),
- new TypeMask.nonNullSubclass(a.rawType));
+ Expect.equals(convert(singleton(a).union(singleton(b))),
+ new TypeMask.nonNullSubclass(a.rawType));
- Expect.equals(convert(singleton(a).union(singleton(b)).union(nullSingleton)),
- new TypeMask.subclass(a.rawType));
+ Expect.equals(
+ convert(singleton(a).union(singleton(b)).union(nullSingleton)),
+ new TypeMask.subclass(a.rawType));
- Expect.equals(
- convert(singleton(b).union(singleton(d))).simplify(result.compiler),
- new TypeMask.nonNullSubtype(a.rawType));
+ Expect.equals(
+ convert(singleton(b).union(singleton(d))).simplify(result.compiler),
+ new TypeMask.nonNullSubtype(a.rawType));
+ });
}
testSelectors() {
@@ -1463,45 +1524,46 @@ testSelectors() {
new Z().foo();
}
""";
- AnalysisResult result = analyze(source);
+ return analyze(source).then((result) {
- inferredType(Selector selector) {
- return result.compiler.typesTask.concreteTypesInferrer
- .getTypeOfSelector(selector);
- }
+ inferredType(Selector selector) {
+ return result.compiler.typesTask.concreteTypesInferrer
+ .getTypeOfSelector(selector);
+ }
- ClassElement abc = findElement(result.compiler, 'ABC');
- ClassElement bc = findElement(result.compiler, 'BC');
- ClassElement a = findElement(result.compiler, 'A');
- ClassElement b = findElement(result.compiler, 'B');
- ClassElement c = findElement(result.compiler, 'C');
- ClassElement xy = findElement(result.compiler, 'XY');
- ClassElement x = findElement(result.compiler, 'X');
- ClassElement y = findElement(result.compiler, 'Y');
- ClassElement z = findElement(result.compiler, 'Z');
-
- Selector foo = new Selector.call(buildSourceString("foo"), null, 0);
-
- Expect.equals(
- inferredType(foo).simplify(result.compiler),
- new TypeMask.nonNullSubclass(abc.rawType));
- Expect.equals(
- inferredType(new TypedSelector.subclass(x.rawType, foo)),
- new TypeMask.nonNullExact(b.rawType));
- Expect.equals(
- inferredType(new TypedSelector.subclass(y.rawType, foo)),
- new TypeMask.nonNullExact(c.rawType));
- Expect.equals(
- inferredType(new TypedSelector.subclass(z.rawType, foo)),
- new TypeMask.nonNullExact(a.rawType));
- Expect.equals(
- inferredType(new TypedSelector.subclass(
- xy.rawType, foo)).simplify(result.compiler),
- new TypeMask.nonNullSubclass(bc.rawType));
-
- Selector bar = new Selector.call(buildSourceString("bar"), null, 0);
-
- Expect.isNull(inferredType(bar));
+ ClassElement abc = findElement(result.compiler, 'ABC');
+ ClassElement bc = findElement(result.compiler, 'BC');
+ ClassElement a = findElement(result.compiler, 'A');
+ ClassElement b = findElement(result.compiler, 'B');
+ ClassElement c = findElement(result.compiler, 'C');
+ ClassElement xy = findElement(result.compiler, 'XY');
+ ClassElement x = findElement(result.compiler, 'X');
+ ClassElement y = findElement(result.compiler, 'Y');
+ ClassElement z = findElement(result.compiler, 'Z');
+
+ Selector foo = new Selector.call(buildSourceString("foo"), null, 0);
+
+ Expect.equals(
+ inferredType(foo).simplify(result.compiler),
+ new TypeMask.nonNullSubclass(abc.rawType));
+ Expect.equals(
+ inferredType(new TypedSelector.subclass(x.rawType, foo)),
+ new TypeMask.nonNullExact(b.rawType));
+ Expect.equals(
+ inferredType(new TypedSelector.subclass(y.rawType, foo)),
+ new TypeMask.nonNullExact(c.rawType));
+ Expect.equals(
+ inferredType(new TypedSelector.subclass(z.rawType, foo)),
+ new TypeMask.nonNullExact(a.rawType));
+ Expect.equals(
+ inferredType(new TypedSelector.subclass(
+ xy.rawType, foo)).simplify(result.compiler),
+ new TypeMask.nonNullSubclass(bc.rawType));
+
+ Selector bar = new Selector.call(buildSourceString("bar"), null, 0);
+
+ Expect.isNull(inferredType(bar));
+ });
}
testMixins() {
@@ -1523,11 +1585,12 @@ testMixins() {
x; y; z; w;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('x', [result.string]);
- result.checkNodeHasType('y', [result.string]);
- result.checkNodeHasType('z', [result.int]);
- result.checkNodeHasType('w', [result.int]);
+ return analyze(source).then((result) {
+ result.checkNodeHasType('x', [result.string]);
+ result.checkNodeHasType('y', [result.string]);
+ result.checkNodeHasType('z', [result.int]);
+ result.checkNodeHasType('w', [result.int]);
+ });
}
testClosures() {
@@ -1549,10 +1612,11 @@ testClosures() {
a; b; f;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('a', [result.int, result.string]);
- result.checkNodeHasType('f', [result.functionType]);
- result.checkNodeHasUnknownType('b');
+ return analyze(source).then((AnalysisResult result) {
+ result.checkNodeHasType('a', [result.int, result.string]);
+ result.checkNodeHasType('f', [result.functionType]);
+ result.checkNodeHasUnknownType('b');
+ });
}
testNestedFunctions() {
@@ -1574,69 +1638,72 @@ testNestedFunctions() {
a; b; f;
}
""";
- AnalysisResult result = analyze(source);
- result.checkNodeHasType('a', [result.int, result.string]);
- result.checkNodeHasType('f', [result.functionType]);
- result.checkNodeHasUnknownType('b');
+ return analyze(source).then((AnalysisResult result) {
+ result.checkNodeHasType('a', [result.int, result.string]);
+ result.checkNodeHasType('f', [result.functionType]);
+ result.checkNodeHasUnknownType('b');
+ });
}
void main() {
- testDynamicBackDoor();
- testVariableDeclaration();
- testLiterals();
- testRedefinition();
- testIfThenElse();
- testTernaryIf();
- testWhile();
- testDoWhile();
- testFor1();
- testFor2();
- testFor3();
- testForIn();
- testToplevelVariable();
- testNonRecusiveFunction();
- testRecusiveFunction();
- testMutuallyRecusiveFunction();
- testSimpleSend();
- // testSendToClosureField(); // closures are not yet supported
- testSendToThis1();
- testSendToThis2();
- testSendToThis3();
- testConstructor();
- testGetters();
- testSetters();
- testOptionalNamedParameters();
- testOptionalPositionalParameters();
- testListLiterals();
- testMapLiterals();
- testReturn();
- // testNoReturn(); // right now we infer the empty type instead of null
- testArithmeticOperators();
- testBooleanOperators();
- testBooleanOperatorsShortCirtcuit();
- testOperators();
- testCompoundOperators1();
- testCompoundOperators2();
- testSetIndexOperator();
- testInequality();
- testFieldInitialization1();
- testFieldInitialization2();
- testFieldInitialization3();
- testSendWithWrongArity();
- testBigTypesWidening1();
- testBigTypesWidening2();
- testDynamicIsAbsorbing();
- testLists();
- testListWithCapacity();
- testEmptyList();
- testJsCall();
- testJsCallAugmentsSeenClasses();
- testIsCheck();
- testSeenClasses();
- testIntDoubleNum();
- testConcreteTypeToTypeMask();
- testSelectors();
- testMixins();
- testClosures();
- testNestedFunctions();
+ asyncTest(() => Future.forEach([
+ testDynamicBackDoor,
+ testVariableDeclaration,
+ testLiterals,
+ testRedefinition,
+ testIfThenElse,
+ testTernaryIf,
+ testWhile,
+ testDoWhile,
+ testFor1,
+ testFor2,
+ testFor3,
+ testForIn,
+ testToplevelVariable,
+ testNonRecusiveFunction,
+ testRecusiveFunction,
+ testMutuallyRecusiveFunction,
+ testSimpleSend,
+ // testSendToClosureField, // closures are not yet supported
+ testSendToThis1,
+ testSendToThis2,
+ testSendToThis3,
+ testConstructor,
+ testGetters,
+ testSetters,
+ testOptionalNamedParameters,
+ testOptionalPositionalParameters,
+ testListLiterals,
+ testMapLiterals,
+ testReturn,
+ // testNoReturn, // right now we infer the empty type instead of null
+ testArithmeticOperators,
+ testBooleanOperators,
+ testBooleanOperatorsShortCirtcuit,
+ testOperators,
+ testCompoundOperators1,
+ testCompoundOperators2,
+ testSetIndexOperator,
+ testInequality,
+ testFieldInitialization1,
+ testFieldInitialization2,
+ testFieldInitialization3,
+ testSendWithWrongArity,
+ testBigTypesWidening1,
+ testBigTypesWidening2,
+ testDynamicIsAbsorbing,
+ testLists,
+ testListWithCapacity,
+ testEmptyList,
+ testJsCall,
+ testJsCallAugmentsSeenClasses,
+ testIsCheck,
+ testSeenClasses,
+ testIntDoubleNum,
+ testConcreteTypeToTypeMask,
+ testSelectors,
+ testMixins,
+ testClosures,
+ testNestedFunctions,
+ ], (f) => f()));
}
« no previous file with comments | « tests/compiler/dart2js/concrete_type_inference_test.dart ('k') | tests/compiler/dart2js/dart_backend_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698