From 37fc78ec4ed2e248983a8b365ba98b8dd2bd3b20 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Thu, 7 Jul 2016 04:57:15 +1000 Subject: HIR Typecheck CS - Equate ! with anything --- src/hir_typeck/expr_cs.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp index bcaf3a68..68d5c77e 100644 --- a/src/hir_typeck/expr_cs.cpp +++ b/src/hir_typeck/expr_cs.cpp @@ -1560,6 +1560,15 @@ void Context::equate_types(const Span& sp, const ::HIR::TypeRef& li, const ::HIR } }; + // If either side is !, return early + // TODO: Should ! end up in an ivar? + TU_IFLET(::HIR::TypeRef::Data, l_t.m_data, Diverge, l_e, + return ; + ) + TU_IFLET(::HIR::TypeRef::Data, r_t.m_data, Diverge, r_e, + return ; + ) + if( l_t.m_data.tag() != r_t.m_data.tag() ) { ERROR(sp, E0000, "Type mismatch between " << this->m_ivars.fmt_type(l_t) << " and " << this->m_ivars.fmt_type(r_t)); } -- cgit v1.2.3