summaryrefslogtreecommitdiff
path: root/src/hir/from_ast_expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir/from_ast_expr.cpp')
-rw-r--r--src/hir/from_ast_expr.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/hir/from_ast_expr.cpp b/src/hir/from_ast_expr.cpp
index d0877c5f..159aed89 100644
--- a/src/hir/from_ast_expr.cpp
+++ b/src/hir/from_ast_expr.cpp
@@ -467,10 +467,20 @@ struct LowerHIR_ExprNode_Visitor:
case CORETYPE_CHAR: return ::HIR::CoreType::Char;
default:
- BUG(sp, "Unknown type for integer literal - " << ct);
+ BUG(sp, "Unknown type for integer literal - " << coretype_name(ct));
}
}
};
+ if( v.m_datatype == CORETYPE_F32 || v.m_datatype == CORETYPE_F64 ) {
+ DEBUG("Integer annotated as float, create float node");
+ m_rv.reset( new ::HIR::ExprNode_Literal( v.span(),
+ ::HIR::ExprNode_Literal::Data::make_Float({
+ (v.m_datatype == CORETYPE_F32 ? ::HIR::CoreType::F32 : ::HIR::CoreType::F64),
+ static_cast<double>(v.m_value)
+ })
+ ) );
+ return ;
+ }
m_rv.reset( new ::HIR::ExprNode_Literal( v.span(),
::HIR::ExprNode_Literal::Data::make_Integer({
H::get_type( Span(v.get_pos()), v.m_datatype ),