From ca59f1e56b2fb221a86b53f75708b36524cc7274 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 4 Sep 2016 12:23:10 +0800 Subject: HIR - Restructure _Unsize handling to operate on pointers --- src/hir/type.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/hir/type.cpp') diff --git a/src/hir/type.cpp b/src/hir/type.cpp index 7a833a32..e51929c9 100644 --- a/src/hir/type.cpp +++ b/src/hir/type.cpp @@ -816,7 +816,20 @@ bool ::HIR::TypeRef::match_test_generics(const Span& sp, const ::HIR::TypeRef& x return Compare::Equal; ), (TraitObject, - TODO(sp, "Compare " << *this << " and " << right); + if( le.m_markers.size() != re.m_markers.size() ) + return Compare::Unequal; + auto rv = le.m_trait .compare_with_placeholders( sp, re.m_trait, resolve_placeholder ); + if( rv == Compare::Unequal ) + return rv; + for( unsigned int i = 0; i < le.m_markers.size(); i ++ ) + { + auto rv2 = le.m_markers[i] .compare_with_placeholders( sp, re.m_markers[i], resolve_placeholder ); + if( rv2 == Compare::Unequal ) + return Compare::Unequal; + if( rv2 == Compare::Fuzzy ) + rv = Compare::Fuzzy; + } + return rv; ), (Array, if( le.size_val != re.size_val ) -- cgit v1.2.3