summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-07-07 04:57:15 +1000
committerJohn Hodge <tpg@mutabah.net>2016-07-07 04:57:15 +1000
commit37fc78ec4ed2e248983a8b365ba98b8dd2bd3b20 (patch)
tree2bd2b231e5efb6a694d7cad695187acde8aa3d67 /src
parentddb32569d7a42bcb440cd7ddc7add13654070c80 (diff)
downloadmrust-37fc78ec4ed2e248983a8b365ba98b8dd2bd3b20.tar.gz
HIR Typecheck CS - Equate ! with anything
Diffstat (limited to 'src')
-rw-r--r--src/hir_typeck/expr_cs.cpp9
1 files changed, 9 insertions, 0 deletions
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));
}