示例#1
0
 public BoundIfElseExpression(BoundExpression boundCondition, BoundExpression ifTrue, BoundExpression ifFalse, IType type, IfElseExpressionSyntax ifElseExpressionSyntax)
     : base(ifElseExpressionSyntax, type)
 {
     Condition = boundCondition;
     IfTrue = ifTrue;
     IfFalse = ifFalse;
 }
示例#2
0
 public virtual void Visit(IfElseExpressionSyntax ifElseExpressionSyntax)
 {
     Visit(ifElseExpressionSyntax.Condition);
     Visit(ifElseExpressionSyntax.IfTrueExpression);
     Visit(ifElseExpressionSyntax.IfFalseExpression);
 }
示例#3
0
文件: Binder.cs 项目: lawl-dev/Kiwi
        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);
        }