diff options
| author | Santiago Pastorino <spastorino@gmail.com> | 2023-08-04 17:44:41 -0300 |
|---|---|---|
| committer | Santiago Pastorino <spastorino@gmail.com> | 2023-08-07 10:24:11 -0300 |
| commit | 0e69a8ad20522467ea1b0c32720bbc7faa1eef13 (patch) | |
| tree | 9a29d4adb89b7ab751af7c6a34eb744a4c705e3e | |
| parent | 496faa857c4bc66a73d36e9bb06fbedd99f7fe1c (diff) | |
| download | rust-0e69a8ad20522467ea1b0c32720bbc7faa1eef13.tar.gz rust-0e69a8ad20522467ea1b0c32720bbc7faa1eef13.zip | |
Add all_trait_decls to SMIR
| -rw-r--r-- | compiler/rustc_smir/src/rustc_smir/mod.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_smir/src/stable_mir/mod.rs | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/compiler/rustc_smir/src/rustc_smir/mod.rs b/compiler/rustc_smir/src/rustc_smir/mod.rs index 239b61b433d..d12de92db8a 100644 --- a/compiler/rustc_smir/src/rustc_smir/mod.rs +++ b/compiler/rustc_smir/src/rustc_smir/mod.rs @@ -42,6 +42,14 @@ impl<'tcx> Context for Tables<'tcx> { Some(self.crate_item(self.tcx.entry_fn(())?.0)) } + fn all_trait_decls(&mut self) -> stable_mir::TraitDecls { + self.tcx + .traits(LOCAL_CRATE) + .iter() + .map(|trait_def_id| self.trait_def(*trait_def_id)) + .collect() + } + fn trait_decl(&mut self, trait_def: &stable_mir::ty::TraitDef) -> stable_mir::ty::TraitDecl { let def_id = self.trait_def_id(trait_def); let trait_def = self.tcx.trait_def(def_id); diff --git a/compiler/rustc_smir/src/stable_mir/mod.rs b/compiler/rustc_smir/src/stable_mir/mod.rs index 0f32f07dcb5..d93f25249b9 100644 --- a/compiler/rustc_smir/src/stable_mir/mod.rs +++ b/compiler/rustc_smir/src/stable_mir/mod.rs @@ -32,6 +32,9 @@ pub type DefId = usize; /// A list of crate items. pub type CrateItems = Vec<CrateItem>; +/// A list of crate items. +pub type TraitDecls = Vec<TraitDef>; + /// Holds information about a crate. #[derive(Clone, PartialEq, Eq, Debug)] pub struct Crate { @@ -84,6 +87,7 @@ pub trait Context { /// Retrieve all items of the local crate that have a MIR associated with them. fn all_local_items(&mut self) -> CrateItems; fn mir_body(&mut self, item: &CrateItem) -> mir::Body; + fn all_trait_decls(&mut self) -> TraitDecls; fn trait_decl(&mut self, trait_def: &TraitDef) -> TraitDecl; /// Get information about the local crate. fn local_crate(&self) -> Crate; |
