about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Esche <regexident@gmail.com>2024-11-06 09:53:11 +0100
committerVincent Esche <regexident@gmail.com>2024-11-06 10:02:13 +0100
commitd5dec8ab035f50af3a34c30f90350ef3d3f2cae0 (patch)
treec8b0e3b3969546fed591b8672f92af8dcfafd9d7
parentde30d7dc37239209827cdb7283e017863cdc0bd2 (diff)
downloadrust-d5dec8ab035f50af3a34c30f90350ef3d3f2cae0.tar.gz
rust-d5dec8ab035f50af3a34c30f90350ef3d3f2cae0.zip
Add `direct_supertraits(…)` HIR-level method to `hir::Trait` type
-rw-r--r--src/tools/rust-analyzer/crates/hir/src/lib.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/hir/src/lib.rs b/src/tools/rust-analyzer/crates/hir/src/lib.rs
index bfe9f3bd74e..c9498b3aead 100644
--- a/src/tools/rust-analyzer/crates/hir/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/hir/src/lib.rs
@@ -68,7 +68,7 @@ use hir_ty::{
     all_super_traits, autoderef, check_orphan_rules,
     consteval::{try_const_usize, unknown_const_as_generic, ConstExt},
     diagnostics::BodyValidationDiagnostic,
-    error_lifetime, known_const_to_ast,
+    direct_super_traits, error_lifetime, known_const_to_ast,
     layout::{Layout as TyLayout, RustcEnumVariantIdx, RustcFieldIdx, TagEncoding},
     method_resolution,
     mir::{interpret_mir, MutBorrowKind},
@@ -2704,6 +2704,11 @@ impl Trait {
         db.trait_data(self.id).name.clone()
     }
 
+    pub fn direct_supertraits(self, db: &dyn HirDatabase) -> Vec<Trait> {
+        let traits = direct_super_traits(db.upcast(), self.into());
+        traits.iter().map(|tr| Trait::from(*tr)).collect()
+    }
+
     pub fn all_supertraits(self, db: &dyn HirDatabase) -> Vec<Trait> {
         let traits = all_super_traits(db.upcast(), self.into());
         traits.iter().map(|tr| Trait::from(*tr)).collect()