Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r--crates/hir/src/lib.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 88eb3b127e..56bf1d2742 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -34,7 +34,10 @@ pub mod term_search;
mod display;
-use std::{mem::discriminant, ops::ControlFlow};
+use std::{
+ mem::discriminant,
+ ops::{ControlFlow, Not},
+};
use arrayvec::ArrayVec;
use base_db::{CrateDisplayName, CrateId, CrateOrigin};
@@ -2697,6 +2700,18 @@ impl Trait {
hir_ty::dyn_compatibility::dyn_compatibility(db, self.id)
}
+ pub fn dyn_compatibility_all_violations(
+ &self,
+ db: &dyn HirDatabase,
+ ) -> Option<Vec<DynCompatibilityViolation>> {
+ let mut violations = vec![];
+ hir_ty::dyn_compatibility::dyn_compatibility_with_callback(db, self.id, &mut |violation| {
+ violations.push(violation);
+ ControlFlow::Continue(())
+ });
+ violations.is_empty().not().then_some(violations)
+ }
+
fn all_macro_calls(&self, db: &dyn HirDatabase) -> Box<[(AstId<ast::Item>, MacroCallId)]> {
db.trait_data(self.id)
.macro_calls