blindScope = new RefinementTrackingFlowScope(blindScope, refinements); FlowScope leftScope = firstPreciserScopeKnowingConditionOutcome(left, blindScope, !outcome); StaticTypedSlot leftVar = new RefinementTrackingFlowScope( firstPreciserScopeKnowingConditionOutcome(left, blindScope, outcome), refinements); rightScope = firstPreciserScopeKnowingConditionOutcome(right, rightScope, !outcome);
@Override public FlowScope inferSlotType(String symbol, JSType type) { refinements.add(symbol); return wrap(delegate.inferSlotType(symbol, type)); }
private FlowScope wrap(FlowScope scope) { return scope != delegate ? new RefinementTrackingFlowScope(scope, refinements) : this; }
@Override public FlowScope inferQualifiedSlot( Node node, String symbol, JSType bottomType, JSType inferredType, boolean declare) { refinements.add(symbol); return wrap(delegate.inferQualifiedSlot(node, symbol, bottomType, inferredType, declare)); }