Index: pkg/compiler/lib/src/cps_ir/insert_refinements.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/insert_refinements.dart b/pkg/compiler/lib/src/cps_ir/insert_refinements.dart |
index afea3976dee6bb0de887eee47d1d8de6b271ba79..5922247f4c9b975a8730bdee93bd7dfb9eb78eca 100644 |
--- a/pkg/compiler/lib/src/cps_ir/insert_refinements.dart |
+++ b/pkg/compiler/lib/src/cps_ir/insert_refinements.dart |
@@ -161,6 +161,14 @@ class InsertRefinements extends RecursiveVisitor implements Pass { |
push(falseCont); |
return; |
} |
+ if (condition is TypeTestRaw) { |
+ Primitive value = condition.value.definition; |
+ TypeMask type = types.subtypesOf(condition.dartType); |
+ Primitive refinedValue = new Refinement(value, type); |
+ pushRefinement(trueCont, refinedValue); |
+ push(falseCont); |
+ return; |
+ } |
// If the condition is comparison with a constant, promote the other value. |
// This can happen either for calls to `==` or `identical` calls, such |