From dc4d17fb2edc6cd68e31632484ad01d470984934 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Mon, 1 Aug 2016 13:24:00 +0800 Subject: HIR Typecheck CS - Don't coerce on let unless type is specified --- src/hir_typeck/expr_cs.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp index 792007fb..f051b0b8 100644 --- a/src/hir_typeck/expr_cs.cpp +++ b/src/hir_typeck/expr_cs.cpp @@ -433,7 +433,14 @@ namespace { if( node.m_value ) { this->context.add_ivars( node.m_value->m_res_type ); - this->context.equate_types_coerce( node.span(), node.m_type, node.m_value ); + // If the type was omitted or was just `_`, equate + if( node.m_type.m_data.is_Infer() ) { + this->context.equate_types( node.span(), node.m_type, node.m_value->m_res_type ); + } + // otherwise coercions apply + else { + this->context.equate_types_coerce( node.span(), node.m_type, node.m_value ); + } node.m_value->visit( *this ); } -- cgit v1.2.3