Index: pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/type_mask_system.dart b/pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
index a84d28d4ba5cd333e83868f839722da0da625407..d403b2fd17ce68bb7deaf8fa9ab0555ab4677ac4 100644 |
--- a/pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
+++ b/pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
@@ -42,6 +42,7 @@ class TypeMaskSystem { |
TypeMask get extendableNativeListType => backend.extendableArrayType; |
TypeMask numStringBoolType; |
+ TypeMask interceptorType; |
ClassElement get jsNullClass => backend.jsNullClass; |
@@ -63,6 +64,8 @@ class TypeMaskSystem { |
numStringBoolType = |
new TypeMask.unionOf(<TypeMask>[anyNum, anyString, anyBool], |
classWorld); |
+ interceptorType = |
+ new TypeMask.nonNullSubtype(backend.jsInterceptorClass, classWorld); |
} |
bool methodUsesReceiverArgument(FunctionElement function) { |
@@ -199,6 +202,9 @@ class TypeMaskSystem { |
return t.satisfies(backend.jsIntClass, classWorld); |
} |
+ // TODO(sra): Find a better name. 'NativeList' is a bad name because there |
+ // are many native classes in dart:html that implement List but are not (and |
+ // should not be) included in this predicate. |
bool isDefinitelyNativeList(TypeMask t, {bool allowNull: false}) { |
if (!allowNull && t.isNullable) return false; |
return t.nonNullable().satisfies(backend.jsArrayClass, classWorld); |