diff options
author | John Hodge <tpg@mutabah.net> | 2016-09-04 12:23:10 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-09-04 12:23:10 +0800 |
commit | ca59f1e56b2fb221a86b53f75708b36524cc7274 (patch) | |
tree | b6c580f3f28be3bf94dbfb0572f1e607752c7ced /src/hir/type.cpp | |
parent | 06f283b0a4c9b3e22bce6041d8345f1be53f13b0 (diff) | |
download | mrust-ca59f1e56b2fb221a86b53f75708b36524cc7274.tar.gz |
HIR - Restructure _Unsize handling to operate on pointers
Diffstat (limited to 'src/hir/type.cpp')
-rw-r--r-- | src/hir/type.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
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 ) |