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); }