summaryrefslogtreecommitdiff
path: root/src/trans/auto_impls.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/trans/auto_impls.cpp')
-rw-r--r--src/trans/auto_impls.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/trans/auto_impls.cpp b/src/trans/auto_impls.cpp
index ced322a4..f7f85b23 100644
--- a/src/trans/auto_impls.cpp
+++ b/src/trans/auto_impls.cpp
@@ -202,7 +202,7 @@ void Trans_AutoImpl_Clone(State& state, ::HIR::TypeRef ty)
impl.m_methods.insert(::std::make_pair( RcString::new_interned("clone"), ::HIR::TraitImpl::ImplEnt< ::HIR::Function> { false, ::std::move(fcn) } ));
// Add impl to the crate
- state.crate.m_trait_impls[state.lang_Clone].push_back( ::std::move(impl) );
+ state.crate.m_trait_impls[state.lang_Clone].get_list_for_type_mut(impl.m_type).push_back( ::std::move(impl) );
}
void Trans_AutoImpls(::HIR::Crate& crate, TransList& trans_list)
@@ -237,7 +237,9 @@ void Trans_AutoImpls(::HIR::Crate& crate, TransList& trans_list)
//DEBUG("add_function(" << p << ")");
auto e = trans_list.add_function(::std::move(p));
- auto it = ::std::find_if( impl_list_it->second.begin(), impl_list_it->second.end(), [&](const auto& i){ return i.m_type == ty; });
+ const auto* impl_list = impl_list_it->second.get_list_for_type(ty);
+ assert(impl_list);
+ auto it = ::std::find_if( impl_list->begin(), impl_list->end(), [&](const auto& i){ return i.m_type == ty; });
assert( it->m_methods.size() == 1 );
e->ptr = &it->m_methods.begin()->second.data;
}