| Index: tests/compiler/dart2js/field_type_simple_inferer_test.dart
|
| diff --git a/tests/compiler/dart2js/field_type_simple_inferer_test.dart b/tests/compiler/dart2js/field_type_simple_inferer_test.dart
|
| index ad287786a35f5080b320e5d8f1eac59be8b0ef80..59ae8774518b4816d380a3a5e7efd4245c80c1d6 100644
|
| --- a/tests/compiler/dart2js/field_type_simple_inferer_test.dart
|
| +++ b/tests/compiler/dart2js/field_type_simple_inferer_test.dart
|
| @@ -4,25 +4,20 @@
|
|
|
| import 'package:expect/expect.dart';
|
| import 'package:async_helper/async_helper.dart';
|
| -import 'package:compiler/src/types/types.dart'
|
| - show TypeMask;
|
| +import 'package:compiler/src/types/types.dart' show TypeMask;
|
|
|
| import 'compiler_helper.dart';
|
| import 'type_mask_test_helper.dart';
|
|
|
| -void compileAndFind(String code,
|
| - String className,
|
| - String memberName,
|
| - bool disableInlining,
|
| - check(compiler, element)) {
|
| +void compileAndFind(String code, String className, String memberName,
|
| + bool disableInlining, check(compiler, element)) {
|
| Uri uri = new Uri(scheme: 'source');
|
| - var compiler = compilerFor(code, uri,
|
| - disableInlining: disableInlining);
|
| + var compiler = compilerFor(code, uri, disableInlining: disableInlining);
|
| asyncTest(() => compiler.run(uri).then((_) {
|
| - var cls = findElement(compiler, className);
|
| - var member = cls.lookupMember(memberName);
|
| - check(compiler, member);
|
| - }));
|
| + var cls = findElement(compiler, className);
|
| + var member = cls.lookupMember(memberName);
|
| + check(compiler, member);
|
| + }));
|
| }
|
|
|
| const String TEST_1 = r"""
|
| @@ -179,7 +174,6 @@ const String TEST_10 = r"""
|
| }
|
| """;
|
|
|
| -
|
| const String TEST_11 = r"""
|
| class S {
|
| int fs = 1;
|
| @@ -477,17 +471,12 @@ const String TEST_27 = r"""
|
|
|
| void doTest(String test, bool disableInlining, Map<String, Function> fields) {
|
| fields.forEach((String name, Function f) {
|
| - compileAndFind(
|
| - test,
|
| - 'A',
|
| - name,
|
| - disableInlining,
|
| - (compiler, field) {
|
| - TypeMask type = f(compiler.commonMasks);
|
| - var inferrer = compiler.globalInference.typesInferrer;
|
| - TypeMask inferredType =
|
| - simplify(inferrer.getTypeOfElement(field), inferrer.compiler);
|
| - Expect.equals(type, inferredType, test);
|
| + compileAndFind(test, 'A', name, disableInlining, (compiler, field) {
|
| + TypeMask type = f(compiler.commonMasks);
|
| + var inferrer = compiler.globalInference.typesInferrer;
|
| + TypeMask inferredType =
|
| + simplify(inferrer.getTypeOfElement(field), inferrer.compiler);
|
| + Expect.equals(type, inferredType, test);
|
| });
|
| });
|
| }
|
| @@ -502,21 +491,22 @@ void test() {
|
| findTypeMask(types.compiler, 'Interceptor', 'nonNullSubclass');
|
|
|
| runTest(TEST_1, {'f': (types) => types.nullType});
|
| - runTest(TEST_2, {'f1': (types) => types.nullType,
|
| - 'f2': (types) => types.uint31Type});
|
| - runTest(TEST_3, {'f1': (types) => types.uint31Type,
|
| - 'f2': (types) => types.uint31Type.nullable()});
|
| - runTest(TEST_4, {'f1': subclassOfInterceptor,
|
| - 'f2': (types) => types.stringType.nullable()});
|
| + runTest(TEST_2,
|
| + {'f1': (types) => types.nullType, 'f2': (types) => types.uint31Type});
|
| + runTest(TEST_3, {
|
| + 'f1': (types) => types.uint31Type,
|
| + 'f2': (types) => types.uint31Type.nullable()
|
| + });
|
| + runTest(TEST_4, {
|
| + 'f1': subclassOfInterceptor,
|
| + 'f2': (types) => types.stringType.nullable()
|
| + });
|
|
|
| // TODO(ngeoffray): We should try to infer that the initialization
|
| // code at the declaration site of the fields does not matter.
|
| - runTest(TEST_5, {'f1': subclassOfInterceptor,
|
| - 'f2': subclassOfInterceptor});
|
| - runTest(TEST_6, {'f1': subclassOfInterceptor,
|
| - 'f2': subclassOfInterceptor});
|
| - runTest(TEST_7, {'f1': subclassOfInterceptor,
|
| - 'f2': subclassOfInterceptor});
|
| + runTest(TEST_5, {'f1': subclassOfInterceptor, 'f2': subclassOfInterceptor});
|
| + runTest(TEST_6, {'f1': subclassOfInterceptor, 'f2': subclassOfInterceptor});
|
| + runTest(TEST_7, {'f1': subclassOfInterceptor, 'f2': subclassOfInterceptor});
|
|
|
| runTest(TEST_8, {'f': (types) => types.stringType.nullable()});
|
| runTest(TEST_9, {'f': (types) => types.stringType.nullable()});
|
| @@ -529,43 +519,55 @@ void test() {
|
|
|
| runTest(TEST_13, {'fs': (types) => types.uint31Type});
|
| runTest(TEST_14, {'f': (types) => types.uint31Type});
|
| - runTest(TEST_15, {'f': (types) {
|
| - ClassElement cls =
|
| - types.compiler.backend.helpers.jsIndexableClass;
|
| - return new TypeMask.nonNullSubtype(cls,
|
| - types.compiler.world);
|
| - }});
|
| + runTest(TEST_15, {
|
| + 'f': (types) {
|
| + ClassElement cls = types.compiler.backend.helpers.jsIndexableClass;
|
| + return new TypeMask.nonNullSubtype(cls, types.compiler.world);
|
| + }
|
| + });
|
| runTest(TEST_16, {'f': subclassOfInterceptor});
|
| runTest(TEST_17, {'f': (types) => types.uint31Type.nullable()});
|
| - runTest(TEST_18, {'f1': (types) => types.uint31Type,
|
| - 'f2': (types) => types.stringType,
|
| - 'f3': (types) => types.dynamicType});
|
| - runTest(TEST_19, {'f1': (types) => types.uint31Type,
|
| - 'f2': (types) => types.stringType,
|
| - 'f3': (types) => types.dynamicType});
|
| + runTest(TEST_18, {
|
| + 'f1': (types) => types.uint31Type,
|
| + 'f2': (types) => types.stringType,
|
| + 'f3': (types) => types.dynamicType
|
| + });
|
| + runTest(TEST_19, {
|
| + 'f1': (types) => types.uint31Type,
|
| + 'f2': (types) => types.stringType,
|
| + 'f3': (types) => types.dynamicType
|
| + });
|
| runTest(TEST_20, {'f': (types) => types.uint31Type.nullable()});
|
| runTest(TEST_21, {'f': (types) => types.uint31Type.nullable()});
|
|
|
| - runTest(TEST_22, {'f1': (types) => types.uint31Type,
|
| - 'f2': (types) => types.uint31Type,
|
| - 'f3': (types) => types.stringType.nullable()});
|
| -
|
| - runTest(TEST_23, {'f1': (types) => types.uint31Type.nullable(),
|
| - 'f2': (types) => types.uint31Type.nullable(),
|
| - 'f3': (types) => types.uint31Type.nullable(),
|
| - 'f4': (types) => types.uint31Type.nullable()});
|
| -
|
| - runTest(TEST_24, {'f1': (types) => types.positiveIntType,
|
| - 'f2': (types) => types.positiveIntType,
|
| - 'f3': (types) => types.uint31Type,
|
| - 'f4': (types) => types.uint31Type,
|
| - 'f5': (types) => types.numType.nullable(),
|
| - 'f6': (types) => types.stringType.nullable()});
|
| -
|
| - runTest(TEST_25, {'f1': (types) => types.uint31Type });
|
| - runTest(TEST_26, {'f1': (types) => types.positiveIntType });
|
| - runTest(TEST_27, {'f1': (types) => types.uint31Type,
|
| - 'f2': (types) => types.uint31Type.nullable()});
|
| + runTest(TEST_22, {
|
| + 'f1': (types) => types.uint31Type,
|
| + 'f2': (types) => types.uint31Type,
|
| + 'f3': (types) => types.stringType.nullable()
|
| + });
|
| +
|
| + runTest(TEST_23, {
|
| + 'f1': (types) => types.uint31Type.nullable(),
|
| + 'f2': (types) => types.uint31Type.nullable(),
|
| + 'f3': (types) => types.uint31Type.nullable(),
|
| + 'f4': (types) => types.uint31Type.nullable()
|
| + });
|
| +
|
| + runTest(TEST_24, {
|
| + 'f1': (types) => types.positiveIntType,
|
| + 'f2': (types) => types.positiveIntType,
|
| + 'f3': (types) => types.uint31Type,
|
| + 'f4': (types) => types.uint31Type,
|
| + 'f5': (types) => types.numType.nullable(),
|
| + 'f6': (types) => types.stringType.nullable()
|
| + });
|
| +
|
| + runTest(TEST_25, {'f1': (types) => types.uint31Type});
|
| + runTest(TEST_26, {'f1': (types) => types.positiveIntType});
|
| + runTest(TEST_27, {
|
| + 'f1': (types) => types.uint31Type,
|
| + 'f2': (types) => types.uint31Type.nullable()
|
| + });
|
| }
|
|
|
| void main() {
|
|
|