public BoundIfElseExpression(BoundExpression boundCondition, BoundExpression ifTrue, BoundExpression ifFalse, IType type, IfElseExpressionSyntax ifElseExpressionSyntax) : base(ifElseExpressionSyntax, type) { Condition = boundCondition; IfTrue = ifTrue; IfFalse = ifFalse; }
public virtual void Visit(IfElseExpressionSyntax ifElseExpressionSyntax) { Visit(ifElseExpressionSyntax.Condition); Visit(ifElseExpressionSyntax.IfTrueExpression); Visit(ifElseExpressionSyntax.IfFalseExpression); }
private BoundIfElseExpression BindIfElseExpression(IfElseExpressionSyntax syntax) { var boundCondition = BindExpression(syntax.Condition); var boundIfTrue = BindExpression(syntax.IfTrueExpression); var boundIfFalse = BindExpression(syntax.IfFalseExpression); Ensure(() => TypeEquals(boundCondition.Type, new BoolCompilerGeneratedType()), "If condition must be of Type Bool"); Ensure(() => TypeEquals(boundIfTrue.Type, boundIfFalse.Type), "IfTrue and IfFalse expression Type must match"); var boundExpressionType = boundIfTrue.Type; //TODO: determind lowest type return new BoundIfElseExpression(boundCondition, boundIfTrue, boundIfFalse, boundExpressionType, syntax); }