diff options
author | John Hodge <tpg@mutabah.net> | 2016-10-12 10:13:01 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-10-12 10:13:01 +0800 |
commit | ef736aa229872419a6fa159844d3899315416aec (patch) | |
tree | dc518028daeb20b82563cb518ba4eece1b1855eb | |
parent | 496b69d8b603e69f728320d1db8155a4575afdd0 (diff) | |
download | mrust-ef736aa229872419a6fa159844d3899315416aec.tar.gz |
HIR From AST - Handle float-annotated integer literals
-rw-r--r-- | src/hir/from_ast_expr.cpp | 12 |
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 ), |