diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/hir_typeck/expr_cs.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp index abb6c125..7501c1fd 100644 --- a/src/hir_typeck/expr_cs.cpp +++ b/src/hir_typeck/expr_cs.cpp @@ -1668,7 +1668,9 @@ namespace { const auto& lang_Unsize = this->context.m_crate.get_lang_item_path(sp, "unsize"); bool found = this->context.m_resolve.find_trait_impls(sp, lang_Unsize, ::HIR::PathParams(e.inner->clone()), *s_e.inner, [](auto , auto){ return true; }); if( found ) { - TODO(sp, "Unsizing cast"); + auto ty = ::HIR::TypeRef::new_borrow(e.type, e.inner->clone()); + node.m_value = NEWNODE(ty.clone(), sp, _Unsize, mv$(node.m_value), ty.clone()); + this->context.equate_types_assoc(sp, ::HIR::TypeRef(), lang_Unsize, ::make_vec1(e.inner->clone()), *s_e.inner, ""); } else { this->context.equate_types(sp, *e.inner, *s_e.inner); |