| Index: tests/compiler/dart2js/type_combination_test.dart
|
| diff --git a/tests/compiler/dart2js/type_combination_test.dart b/tests/compiler/dart2js/type_combination_test.dart
|
| index 6914abad352bb8a54d918a9b8082b4bc4f88b591..6063513e87d7b87f5ae5aa98fc7b956a2c403005 100644
|
| --- a/tests/compiler/dart2js/type_combination_test.dart
|
| +++ b/tests/compiler/dart2js/type_combination_test.dart
|
| @@ -34,12 +34,14 @@ TypeMask jsReadableArray;
|
| TypeMask jsMutableArray;
|
| TypeMask jsFixedArray;
|
| TypeMask jsExtendableArray;
|
| +TypeMask jsUnmodifiableArray;
|
| TypeMask jsString;
|
| TypeMask jsStringOrNull;
|
| TypeMask jsArrayOrNull;
|
| TypeMask jsMutableArrayOrNull;
|
| TypeMask jsFixedArrayOrNull;
|
| TypeMask jsExtendableArrayOrNull;
|
| +TypeMask jsUnmodifiableArrayOrNull;
|
| TypeMask jsIndexableOrNull;
|
| TypeMask jsInterceptorOrNull;
|
|
|
| @@ -113,6 +115,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(emptyType, jsReadableArray, jsReadableArray);
|
| rule(emptyType, jsMutableArray, jsMutableArray);
|
| rule(emptyType, jsExtendableArray, jsExtendableArray);
|
| + rule(emptyType, jsUnmodifiableArray, jsUnmodifiableArray);
|
| rule(emptyType, nonPrimitive1, nonPrimitive1);
|
| rule(emptyType, nonPrimitive2, nonPrimitive2);
|
| rule(emptyType, potentialArray, potentialArray);
|
| @@ -135,6 +138,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(dynamicType, jsReadableArray, dynamicType);
|
| rule(dynamicType, jsMutableArray, dynamicType);
|
| rule(dynamicType, jsExtendableArray, dynamicType);
|
| + rule(dynamicType, jsUnmodifiableArray, dynamicType);
|
| rule(dynamicType, nonPrimitive1, dynamicType);
|
| rule(dynamicType, nonPrimitive2, dynamicType);
|
| rule(dynamicType, potentialArray, dynamicType);
|
| @@ -156,6 +160,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsBoolean, jsReadableArray, jsInterceptor);
|
| rule(jsBoolean, jsMutableArray, jsInterceptor);
|
| rule(jsBoolean, jsExtendableArray, jsInterceptor);
|
| + rule(jsBoolean, jsUnmodifiableArray, jsInterceptor);
|
| rule(jsBoolean, nonPrimitive1, objectType);
|
| rule(jsBoolean, nonPrimitive2, objectType);
|
| rule(jsBoolean, potentialArray, dynamicType);
|
| @@ -176,6 +181,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsNumber, jsReadableArray, jsInterceptor);
|
| rule(jsNumber, jsMutableArray, jsInterceptor);
|
| rule(jsNumber, jsExtendableArray, jsInterceptor);
|
| + rule(jsNumber, jsUnmodifiableArray, jsInterceptor);
|
| rule(jsNumber, nonPrimitive1, objectType);
|
| rule(jsNumber, nonPrimitive2, objectType);
|
| rule(jsNumber, potentialArray, dynamicType);
|
| @@ -195,6 +201,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsInteger, jsReadableArray, jsInterceptor);
|
| rule(jsInteger, jsMutableArray, jsInterceptor);
|
| rule(jsInteger, jsExtendableArray, jsInterceptor);
|
| + rule(jsInteger, jsUnmodifiableArray, jsInterceptor);
|
| rule(jsInteger, nonPrimitive1, objectType);
|
| rule(jsInteger, nonPrimitive2, objectType);
|
| rule(jsInteger, potentialArray, dynamicType);
|
| @@ -213,6 +220,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsDouble, jsReadableArray, jsInterceptor);
|
| rule(jsDouble, jsMutableArray, jsInterceptor);
|
| rule(jsDouble, jsExtendableArray, jsInterceptor);
|
| + rule(jsDouble, jsUnmodifiableArray, jsInterceptor);
|
| rule(jsDouble, nonPrimitive1, objectType);
|
| rule(jsDouble, nonPrimitive2, objectType);
|
| rule(jsDouble, potentialArray, dynamicType);
|
| @@ -230,6 +238,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsIndexable, jsReadableArray, jsIndexable);
|
| rule(jsIndexable, jsMutableArray, jsIndexable);
|
| rule(jsIndexable, jsExtendableArray, jsIndexable);
|
| + rule(jsIndexable, jsUnmodifiableArray, jsIndexable);
|
| rule(jsIndexable, nonPrimitive1, objectType);
|
| rule(jsIndexable, nonPrimitive2, objectType);
|
| rule(jsIndexable, potentialArray, dynamicType);
|
| @@ -246,6 +255,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsString, jsReadableArray, jsIndexable);
|
| rule(jsString, jsMutableArray, jsIndexable);
|
| rule(jsString, jsExtendableArray, jsIndexable);
|
| + rule(jsString, jsUnmodifiableArray, jsIndexable);
|
| rule(jsString, nonPrimitive1, objectType);
|
| rule(jsString, nonPrimitive2, objectType);
|
| rule(jsString, potentialArray, dynamicType);
|
| @@ -261,6 +271,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsReadableArray, jsReadableArray, jsReadableArray);
|
| rule(jsReadableArray, jsMutableArray, jsReadableArray);
|
| rule(jsReadableArray, jsExtendableArray, jsReadableArray);
|
| + rule(jsReadableArray, jsUnmodifiableArray, jsReadableArray);
|
| rule(jsReadableArray, nonPrimitive1, objectType);
|
| rule(jsReadableArray, nonPrimitive2, objectType);
|
| rule(jsReadableArray, potentialArray, potentialArray);
|
| @@ -275,6 +286,7 @@ void testUnion(MockCompiler compiler) {
|
|
|
| rule(jsMutableArray, jsMutableArray, jsMutableArray);
|
| rule(jsMutableArray, jsExtendableArray, jsMutableArray);
|
| + rule(jsMutableArray, jsUnmodifiableArray, jsReadableArray);
|
| rule(jsMutableArray, nonPrimitive1, objectType);
|
| rule(jsMutableArray, nonPrimitive2, objectType);
|
| rule(jsMutableArray, potentialArray, potentialArray);
|
| @@ -288,6 +300,7 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsMutableArray, jsFixedArray, jsMutableArray);
|
|
|
| rule(jsExtendableArray, jsExtendableArray, jsExtendableArray);
|
| + rule(jsExtendableArray, jsUnmodifiableArray, jsReadableArray);
|
| rule(jsExtendableArray, nonPrimitive1, objectType);
|
| rule(jsExtendableArray, nonPrimitive2, objectType);
|
| rule(jsExtendableArray, potentialArray, potentialArray);
|
| @@ -300,6 +313,19 @@ void testUnion(MockCompiler compiler) {
|
| rule(jsExtendableArray, nullType, jsExtendableArrayOrNull);
|
| rule(jsExtendableArray, jsFixedArray, jsMutableArray);
|
|
|
| + rule(jsUnmodifiableArray, jsUnmodifiableArray, jsUnmodifiableArray);
|
| + rule(jsUnmodifiableArray, nonPrimitive1, objectType);
|
| + rule(jsUnmodifiableArray, nonPrimitive2, objectType);
|
| + rule(jsUnmodifiableArray, potentialArray, potentialArray);
|
| + rule(jsUnmodifiableArray, potentialString, dynamicType);
|
| + rule(jsUnmodifiableArray, jsBooleanOrNull, jsInterceptorOrNull);
|
| + rule(jsUnmodifiableArray, jsNumberOrNull, jsInterceptorOrNull);
|
| + rule(jsUnmodifiableArray, jsIntegerOrNull, jsInterceptorOrNull);
|
| + rule(jsUnmodifiableArray, jsDoubleOrNull, jsInterceptorOrNull);
|
| + rule(jsUnmodifiableArray, jsStringOrNull, jsIndexableOrNull);
|
| + rule(jsUnmodifiableArray, nullType, jsUnmodifiableArrayOrNull);
|
| + rule(jsUnmodifiableArray, jsFixedArray, jsReadableArray);
|
| +
|
| rule(nonPrimitive1, nonPrimitive1, nonPrimitive1);
|
| rule(nonPrimitive1, nonPrimitive2, objectType);
|
| rule(nonPrimitive1, potentialArray, dynamicType);
|
| @@ -400,6 +426,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(emptyType, jsReadableArray, emptyType);
|
| rule(emptyType, jsMutableArray, emptyType);
|
| rule(emptyType, jsExtendableArray, emptyType);
|
| + rule(emptyType, jsUnmodifiableArray, emptyType);
|
| rule(emptyType, nonPrimitive1, emptyType);
|
| rule(emptyType, nonPrimitive2, emptyType);
|
| rule(emptyType, potentialArray, emptyType);
|
| @@ -422,6 +449,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(dynamicType, jsReadableArray, jsReadableArray);
|
| rule(dynamicType, jsMutableArray, jsMutableArray);
|
| rule(dynamicType, jsExtendableArray, jsExtendableArray);
|
| + rule(dynamicType, jsUnmodifiableArray, jsUnmodifiableArray);
|
| rule(dynamicType, nonPrimitive1, nonPrimitive1);
|
| rule(dynamicType, nonPrimitive2, nonPrimitive2);
|
| rule(dynamicType, potentialArray, potentialArray);
|
| @@ -443,6 +471,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsBoolean, jsReadableArray, emptyType);
|
| rule(jsBoolean, jsMutableArray, emptyType);
|
| rule(jsBoolean, jsExtendableArray, emptyType);
|
| + rule(jsBoolean, jsUnmodifiableArray, emptyType);
|
| rule(jsBoolean, nonPrimitive1, emptyType);
|
| rule(jsBoolean, nonPrimitive2, emptyType);
|
| rule(jsBoolean, potentialArray, emptyType);
|
| @@ -463,6 +492,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsNumber, jsReadableArray, emptyType);
|
| rule(jsNumber, jsMutableArray, emptyType);
|
| rule(jsNumber, jsExtendableArray, emptyType);
|
| + rule(jsNumber, jsUnmodifiableArray, emptyType);
|
| rule(jsNumber, nonPrimitive1, emptyType);
|
| rule(jsNumber, nonPrimitive2, emptyType);
|
| rule(jsNumber, potentialArray, emptyType);
|
| @@ -482,6 +512,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsInteger, jsReadableArray, emptyType);
|
| rule(jsInteger, jsMutableArray, emptyType);
|
| rule(jsInteger, jsExtendableArray, emptyType);
|
| + rule(jsInteger, jsUnmodifiableArray, emptyType);
|
| rule(jsInteger, nonPrimitive1, emptyType);
|
| rule(jsInteger, nonPrimitive2, emptyType);
|
| rule(jsInteger, potentialArray, emptyType);
|
| @@ -500,6 +531,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsDouble, jsReadableArray, emptyType);
|
| rule(jsDouble, jsMutableArray, emptyType);
|
| rule(jsDouble, jsExtendableArray, emptyType);
|
| + rule(jsDouble, jsUnmodifiableArray, emptyType);
|
| rule(jsDouble, nonPrimitive1, emptyType);
|
| rule(jsDouble, nonPrimitive2, emptyType);
|
| rule(jsDouble, potentialArray, emptyType);
|
| @@ -517,6 +549,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsIndexable, jsReadableArray, jsReadableArray);
|
| rule(jsIndexable, jsMutableArray, jsMutableArray);
|
| rule(jsIndexable, jsExtendableArray, jsExtendableArray);
|
| + rule(jsIndexable, jsUnmodifiableArray, jsUnmodifiableArray);
|
| rule(jsIndexable, nonPrimitive1, emptyType);
|
| rule(jsIndexable, nonPrimitive2, emptyType);
|
| rule(jsIndexable, potentialArray, new TypeMask.nonNullSubtype(
|
| @@ -535,6 +568,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsString, jsReadableArray, emptyType);
|
| rule(jsString, jsMutableArray, emptyType);
|
| rule(jsString, jsExtendableArray, emptyType);
|
| + rule(jsString, jsUnmodifiableArray, emptyType);
|
| rule(jsString, nonPrimitive1, emptyType);
|
| rule(jsString, nonPrimitive2, emptyType);
|
| rule(jsString, potentialArray, emptyType);
|
| @@ -550,6 +584,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsReadableArray, jsReadableArray, jsReadableArray);
|
| rule(jsReadableArray, jsMutableArray, jsMutableArray);
|
| rule(jsReadableArray, jsExtendableArray, jsExtendableArray);
|
| + rule(jsReadableArray, jsUnmodifiableArray, jsUnmodifiableArray);
|
| rule(jsReadableArray, nonPrimitive1, emptyType);
|
| rule(jsReadableArray, nonPrimitive2, emptyType);
|
| rule(jsReadableArray, potentialArray, jsReadableArray);
|
| @@ -564,6 +599,7 @@ void testIntersection(MockCompiler compiler) {
|
|
|
| rule(jsMutableArray, jsMutableArray, jsMutableArray);
|
| rule(jsMutableArray, jsExtendableArray, jsExtendableArray);
|
| + rule(jsMutableArray, jsUnmodifiableArray, emptyType);
|
| rule(jsMutableArray, nonPrimitive1, emptyType);
|
| rule(jsMutableArray, nonPrimitive2, emptyType);
|
| rule(jsMutableArray, potentialArray, jsMutableArray);
|
| @@ -577,6 +613,7 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsMutableArray, jsFixedArray, jsFixedArray);
|
|
|
| rule(jsExtendableArray, jsExtendableArray, jsExtendableArray);
|
| + rule(jsExtendableArray, jsUnmodifiableArray, emptyType);
|
| rule(jsExtendableArray, nonPrimitive1, emptyType);
|
| rule(jsExtendableArray, nonPrimitive2, emptyType);
|
| rule(jsExtendableArray, potentialArray, jsExtendableArray);
|
| @@ -589,6 +626,19 @@ void testIntersection(MockCompiler compiler) {
|
| rule(jsExtendableArray, nullType, emptyType);
|
| rule(jsExtendableArray, jsFixedArray, emptyType);
|
|
|
| + rule(jsUnmodifiableArray, jsUnmodifiableArray, jsUnmodifiableArray);
|
| + rule(jsUnmodifiableArray, nonPrimitive1, emptyType);
|
| + rule(jsUnmodifiableArray, nonPrimitive2, emptyType);
|
| + rule(jsUnmodifiableArray, potentialArray, jsUnmodifiableArray);
|
| + rule(jsUnmodifiableArray, potentialString, emptyType);
|
| + rule(jsUnmodifiableArray, jsBooleanOrNull, emptyType);
|
| + rule(jsUnmodifiableArray, jsNumberOrNull, emptyType);
|
| + rule(jsUnmodifiableArray, jsIntegerOrNull, emptyType);
|
| + rule(jsUnmodifiableArray, jsDoubleOrNull, emptyType);
|
| + rule(jsUnmodifiableArray, jsStringOrNull, emptyType);
|
| + rule(jsUnmodifiableArray, nullType, emptyType);
|
| + rule(jsUnmodifiableArray, jsFixedArray, emptyType);
|
| +
|
| rule(nonPrimitive1, nonPrimitive1, nonPrimitive1);
|
| rule(nonPrimitive1, nonPrimitive2, emptyType);
|
| rule(nonPrimitive1, potentialArray, emptyType);
|
| @@ -717,6 +767,10 @@ void main() {
|
| world);
|
| jsExtendableArray = new TypeMask.nonNullExact(
|
| backend.jsExtendableArrayClass, world);
|
| + jsUnmodifiableArrayOrNull =
|
| + new TypeMask.exact(backend.jsUnmodifiableArrayClass, world);
|
| + jsUnmodifiableArray =
|
| + new TypeMask.nonNullExact(backend.jsUnmodifiableArrayClass, world);
|
| jsIndexableOrNull = new TypeMask.subtype(backend.jsIndexableClass, world);
|
| jsIndexable = new TypeMask.nonNullSubtype(backend.jsIndexableClass, world);
|
| jsInterceptorOrNull = new TypeMask.subclass(backend.jsInterceptorClass,
|
|
|