Index: sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart b/sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart |
index 86662f7dcb798a5ba86b62cd839375bd13f04499..12cbf777e445c1e2e341e1b0e70fbe74d2cf1720 100644 |
--- a/sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart |
+++ b/sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart |
@@ -842,6 +842,7 @@ abstract class InferrerVisitor |
} else if ("&&" == op.source) { |
conditionIsSimple = false; |
bool oldAccumulateIsChecks = accumulateIsChecks; |
+ assert(accumulateIsChecks || isChecks == null); |
accumulateIsChecks = true; |
if (isChecks == null) isChecks = <Send>[]; |
visit(node.receiver); |
@@ -863,6 +864,7 @@ abstract class InferrerVisitor |
updateIsChecks(tests, usePositive: false); |
bool oldAccumulateIsChecks = accumulateIsChecks; |
accumulateIsChecks = false; |
+ isChecks = null; |
ngeoffray
2014/02/27 10:33:12
How about an abstraction:
bool stopAccumulatingIs
floitsch
2014/02/27 16:07:08
Added helper.
Changed the assert from the '&&' in
|
visit(node.arguments.head); |
accumulateIsChecks = oldAccumulateIsChecks; |
saved.mergeDiamondFlow(locals, null); |