diff --git a/compiler/rustc_public/src/crate_def.rs b/compiler/rustc_public/src/crate_def.rs index 02297c5317621..7395ad63242e1 100644 --- a/compiler/rustc_public/src/crate_def.rs +++ b/compiler/rustc_public/src/crate_def.rs @@ -2,7 +2,7 @@ //! such as, a function, a trait, an enum, and any other definitions. use crate::ty::{GenericArgs, Span, Ty, index_impl}; -use crate::{AssocItems, Crate, Symbol, ThreadLocalIndex, with}; +use crate::{Crate, Symbol, ThreadLocalIndex, with}; /// A unique identification number for each item accessible for the current compilation unit. #[derive(Clone, Copy, PartialEq, Eq, Hash)] @@ -108,14 +108,6 @@ pub trait CrateDefType: CrateDef { } } -/// A trait for retrieving all items from a definition within a crate. -pub trait CrateDefItems: CrateDef { - /// Retrieve all associated items from a definition. - fn associated_items(&self) -> AssocItems { - with(|cx| cx.associated_items(self.def_id())) - } -} - #[derive(Clone, Debug, PartialEq, Eq)] pub struct Attribute { value: String, @@ -171,9 +163,3 @@ macro_rules! crate_def_with_ty { impl CrateDefType for $name {} }; } - -macro_rules! impl_crate_def_items { - ( $name:ident $(;)? ) => { - impl CrateDefItems for $name {} - }; -} diff --git a/compiler/rustc_public/src/lib.rs b/compiler/rustc_public/src/lib.rs index 5da79196dd4ed..14c8b2934e1e9 100644 --- a/compiler/rustc_public/src/lib.rs +++ b/compiler/rustc_public/src/lib.rs @@ -30,7 +30,7 @@ pub mod rustc_internal; use serde::Serialize; use crate::compiler_interface::with; -pub use crate::crate_def::{CrateDef, CrateDefItems, CrateDefType, DefId}; +pub use crate::crate_def::{CrateDef, CrateDefType, DefId}; pub use crate::error::*; use crate::mir::mono::StaticDef; use crate::mir::{Body, Mutability}; diff --git a/compiler/rustc_public/src/ty.rs b/compiler/rustc_public/src/ty.rs index d4f128f87d6ff..b23e6a8cdac78 100644 --- a/compiler/rustc_public/src/ty.rs +++ b/compiler/rustc_public/src/ty.rs @@ -7,11 +7,11 @@ use super::abi::ReprOptions; use super::mir::{Body, Mutability, Safety}; use super::{DefId, Error, Symbol, with}; use crate::abi::{FnAbi, Layout}; -use crate::crate_def::{CrateDef, CrateDefItems, CrateDefType}; +use crate::crate_def::{CrateDef, CrateDefType}; use crate::mir::alloc::{AllocId, read_target_int, read_target_uint}; use crate::mir::mono::StaticDef; use crate::target::MachineInfo; -use crate::{Filename, IndexedVal, Opaque, ThreadLocalIndex}; +use crate::{AssocItems, Filename, IndexedVal, Opaque, ThreadLocalIndex}; #[derive(Copy, Clone, Eq, PartialEq, Hash)] pub struct Ty(usize, ThreadLocalIndex); @@ -952,14 +952,14 @@ crate_def! { pub TraitDef; } -impl_crate_def_items! { - TraitDef; -} - impl TraitDef { pub fn declaration(trait_def: &TraitDef) -> TraitDecl { with(|cx| cx.trait_decl(trait_def)) } + + pub fn associated_items(&self) -> AssocItems { + with(|cx| cx.associated_items(self.def_id())) + } } crate_def! { @@ -978,15 +978,15 @@ crate_def! { pub ImplDef; } -impl_crate_def_items! { - ImplDef; -} - impl ImplDef { /// Retrieve information about this implementation. pub fn trait_impl(&self) -> ImplTrait { with(|cx| cx.trait_impl(self)) } + + pub fn associated_items(&self) -> AssocItems { + with(|cx| cx.associated_items(self.def_id())) + } } crate_def! {