diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/hir_typeck/expr_cs.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp index 44a6c80c..e796b3b1 100644 --- a/src/hir_typeck/expr_cs.cpp +++ b/src/hir_typeck/expr_cs.cpp @@ -795,12 +795,17 @@ namespace { } this->context.add_ivars( node.m_true->m_res_type ); - this->equate_types_inner_coerce(node.span(), node.m_res_type, node.m_true); + if( node.m_false ) { + this->context.equate_types_coerce(node.span(), node.m_res_type, node.m_true); + } + else { + this->context.equate_types(node.span(), node.m_res_type, ::HIR::TypeRef::new_unit()); + } node.m_true->visit( *this ); if( node.m_false ) { this->context.add_ivars( node.m_false->m_res_type ); - this->equate_types_inner_coerce(node.span(), node.m_res_type, node.m_false); + this->context.equate_types_coerce(node.span(), node.m_res_type, node.m_false); node.m_false->visit( *this ); } else { |