authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-05 04:30:04-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-05 04:30:04-07:00
log15fe3c423562e984723bb56862062688422bf73b
treefbd1501c85197f13eaaed94c04990427b438ce68
parent5f0a9a569e506d36cba1c959961cbd067f9fd722

fix explicit casting from integer literal to float


1 files changed, 13 insertions(+), 1 deletions(-)

src/analyze.cpp+13-1
......@@ -3783,7 +3783,19 @@ static TypeTableEntry *analyze_cast_expr(CodeGen *g, ImportTableEntry *import, B
37833783 actual_type->id == TypeTableEntryIdNumLitInt)
37843784 {
37853785 if (num_lit_fits_in_other_type(g, expr_node, wanted_type)) {
3786 node->data.fn_call_expr.cast_op = CastOpNoop;
3786 if ((actual_type->id == TypeTableEntryIdNumLitFloat &&
3787 wanted_type->id == TypeTableEntryIdFloat) ||
3788 (actual_type->id == TypeTableEntryIdNumLitInt &&
3789 wanted_type->id == TypeTableEntryIdInt))
3790 {
3791 node->data.fn_call_expr.cast_op = CastOpNoop;
3792 } else if (wanted_type->id == TypeTableEntryIdInt) {
3793 node->data.fn_call_expr.cast_op = CastOpFloatToInt;
3794 } else if (wanted_type->id == TypeTableEntryIdFloat) {
3795 node->data.fn_call_expr.cast_op = CastOpIntToFloat;
3796 } else {
3797 zig_unreachable();
3798 }
37873799 eval_const_expr_implicit_cast(g, node, expr_node);
37883800 return wanted_type;
37893801 } else {