summaryrefslogtreecommitdiff
path: root/src/hir/hir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir/hir.cpp')
-rw-r--r--src/hir/hir.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/hir/hir.cpp b/src/hir/hir.cpp
index 756e4b7b..29d7e975 100644
--- a/src/hir/hir.cpp
+++ b/src/hir/hir.cpp
@@ -259,7 +259,7 @@ const ::HIR::Function& ::HIR::Crate::get_function_by_path(const Span& sp, const
}
}
-const bool ::HIR::Crate::find_trait_impls(const ::HIR::SimplePath& trait, const ::HIR::TypeRef& type, t_cb_resolve_type ty_res, ::std::function<bool(const ::HIR::TraitImpl&)> callback) const
+bool ::HIR::Crate::find_trait_impls(const ::HIR::SimplePath& trait, const ::HIR::TypeRef& type, t_cb_resolve_type ty_res, ::std::function<bool(const ::HIR::TraitImpl&)> callback) const
{
auto its = this->m_trait_impls.equal_range( trait );
for( auto it = its.first; it != its.second; ++ it )
@@ -273,3 +273,15 @@ const bool ::HIR::Crate::find_trait_impls(const ::HIR::SimplePath& trait, const
}
return false;
}
+bool ::HIR::Crate::find_type_impls(const ::HIR::TypeRef& type, t_cb_resolve_type ty_res, ::std::function<bool(const ::HIR::TypeImpl&)> callback) const
+{
+ for( const auto& impl : this->m_type_impls )
+ {
+ if( impl.matches_type(type, ty_res) ) {
+ if( callback(impl) ) {
+ return true;
+ }
+ }
+ }
+ return false;
+}