Exemple #1
0
        internal override ExpressionType EmitCs(EmitCodeContext codecontext)
        {
            ExpressionType condType, expr1Type, expr2Type;

            codecontext.Write("(");
            condType = ConditionExpr.EmitCs(codecontext);
            codecontext.Write(")?(");
            expr1Type = Expr1.EmitCs(codecontext);
            codecontext.Write("):(");
            expr2Type = Expr2.EmitCs(codecontext);
            codecontext.Write(")");

            if (!condType.Equals(ExpressionType.BoolType))
            {
                throw new GeneratorException(Position, "Condition must be of type bool.");
            }

            if (!expr1Type.Equals(expr2Type))
            {
                throw new GeneratorException(Position, "Type mishmash, " + expr1Type.ToString() + " and " + expr2Type.ToString());
            }

            return(expr1Type);
        }