Index: sdk/lib/_internal/compiler/implementation/inferrer/type_graph_nodes.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_nodes.dart b/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_nodes.dart |
index 2c45b4a7cfb26310f3db12553878459ff31f7d63..a7e9501072b383fe69b2bf639a294b1072314590 100644 |
--- a/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_nodes.dart |
+++ b/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_nodes.dart |
@@ -1102,18 +1102,11 @@ class MapTypeInformation extends TypeInformation { |
} |
TypeMask toTypeMask(TypeGraphInferrerEngine inferrer) { |
- Map<String, TypeMask> mappings; |
if (isDictionary) { |
- mappings = new Map<String, TypeMask>(); |
+ Map<String, TypeMask> mappings = new Map<String, TypeMask>(); |
for (var key in typeInfoMap.keys) { |
- // We strip out entries that contain no information |
- if (!typeInfoMap[key].type.containsAll(inferrer.compiler) || |
- !typeInfoMap[key].type.isNullable) { |
- mappings[key] = typeInfoMap[key].type; |
- } |
+ mappings[key] = typeInfoMap[key].type; |
} |
- } |
- if (mappings != null && !mappings.isEmpty) { |
return new DictionaryTypeMask(initialType.forwardTo, |
initialType.allocationNode, |
initialType.allocationElement, |
@@ -1130,9 +1123,9 @@ class MapTypeInformation extends TypeInformation { |
} |
TypeMask refine(TypeGraphInferrerEngine inferrer) { |
- if (type.isDictionary != isDictionary) { |
+ if (!bailedOut && type.isDictionary != isDictionary) { |
return toTypeMask(inferrer); |
- } else if (type.isDictionary) { |
+ } else if (!bailedOut && type.isDictionary) { |
DictionaryTypeMask mask = type; |
for (var key in typeInfoMap.keys) { |
TypeInformation value = typeInfoMap[key]; |