Example #1
0
 public virtual void VisitConditional(BoundConditionalEx x)
 {
     Accept(x.Condition);
     Accept(x.IfTrue);
     Accept(x.IfFalse);
 }
Example #2
0
 public virtual void VisitConditional(BoundConditionalEx x)
 {
     Accept(x.Condition);
     Accept(x.IfTrue);
     Accept(x.IfFalse);
 }
 public virtual TResult VisitConditional(BoundConditionalEx x) => DefaultVisitOperation(x);
Example #4
0
        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;
        }