public virtual void VisitConditional(BoundConditionalEx x) { Accept(x.Condition); Accept(x.IfTrue); Accept(x.IfFalse); }
public virtual TResult VisitConditional(BoundConditionalEx x) => DefaultVisitOperation(x);
public override void VisitConditional(BoundConditionalEx x) { var state = State; var trueExpr = x.IfTrue ?? x.Condition; // true branch var trueState = State = state.Clone(); VisitCondition(x.Condition, ConditionBranch.ToTrue); Accept(trueExpr); // false branch var falseState = State = state.Clone(); VisitCondition(x.Condition, ConditionBranch.ToFalse); Accept(x.IfFalse); // merge both states State = trueState.Merge(falseState); // x.TypeRefMask = trueExpr.TypeRefMask | x.IfFalse.TypeRefMask; }