diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-02-05 04:30:04 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-02-05 04:30:04 -0700 |
| commit | 15fe3c423562e984723bb56862062688422bf73b (patch) | |
| tree | fbd1501c85197f13eaaed94c04990427b438ce68 /src/analyze.cpp | |
| parent | 5f0a9a569e506d36cba1c959961cbd067f9fd722 (diff) | |
| download | zig-15fe3c423562e984723bb56862062688422bf73b.tar.gz zig-15fe3c423562e984723bb56862062688422bf73b.zip | |
fix explicit casting from integer literal to float
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 9334c50120..2d05c6499a 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -3783,7 +3783,19 @@ static TypeTableEntry *analyze_cast_expr(CodeGen *g, ImportTableEntry *import, B actual_type->id == TypeTableEntryIdNumLitInt) { if (num_lit_fits_in_other_type(g, expr_node, wanted_type)) { - node->data.fn_call_expr.cast_op = CastOpNoop; + if ((actual_type->id == TypeTableEntryIdNumLitFloat && + wanted_type->id == TypeTableEntryIdFloat) || + (actual_type->id == TypeTableEntryIdNumLitInt && + wanted_type->id == TypeTableEntryIdInt)) + { + node->data.fn_call_expr.cast_op = CastOpNoop; + } else if (wanted_type->id == TypeTableEntryIdInt) { + node->data.fn_call_expr.cast_op = CastOpFloatToInt; + } else if (wanted_type->id == TypeTableEntryIdFloat) { + node->data.fn_call_expr.cast_op = CastOpIntToFloat; + } else { + zig_unreachable(); + } eval_const_expr_implicit_cast(g, node, expr_node); return wanted_type; } else { |
