adt::VariantData,
body::scope::ExprScopes,
builtin_type::BuiltinType,
+ data::TraitData,
nameres::per_ns::PerNs,
resolver::{HasResolver, TypeNs},
- traits::TraitData,
type_ref::TypeRef,
ContainerId, CrateModuleId, HasModule, ImplId, LocalEnumVariantId, LocalStructFieldId, Lookup,
ModuleId, UnionId,
impl ImplBlock {
pub fn target_trait(&self, db: &impl DefDatabase) -> Option<TypeRef> {
- db.impl_data(self.id).target_trait().cloned()
+ db.impl_data(self.id).target_trait.clone()
}
pub fn target_type(&self, db: &impl DefDatabase) -> TypeRef {
- db.impl_data(self.id).target_type().clone()
+ db.impl_data(self.id).target_type.clone()
}
pub fn target_ty(&self, db: &impl HirDatabase) -> Ty {
}
pub fn items(&self, db: &impl DefDatabase) -> Vec<AssocItem> {
- db.impl_data(self.id).items().iter().map(|it| (*it).into()).collect()
+ db.impl_data(self.id).items.iter().map(|it| (*it).into()).collect()
}
pub fn is_negative(&self, db: &impl DefDatabase) -> bool {
- db.impl_data(self.id).is_negative()
+ db.impl_data(self.id).is_negative
}
pub fn module(&self, db: &impl DefDatabase) -> Module {
use rustc_hash::FxHashMap;
use hir_def::{
- function::FunctionData,
+ data::FunctionData,
path::known,
resolver::{HasResolver, Resolver, TypeNs},
type_ref::{Mutability, TypeRef},
+//! Contains basic data about various HIR declarations.
+
use std::sync::Arc;
use hir_expand::{
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ImplData {
- target_trait: Option<TypeRef>,
- target_type: TypeRef,
- items: Vec<AssocItemId>,
- negative: bool,
+ pub target_trait: Option<TypeRef>,
+ pub target_type: TypeRef,
+ pub items: Vec<AssocItemId>,
+ pub is_negative: bool,
}
impl ImplData {
let target_trait = src.value.target_trait().map(TypeRef::from_ast);
let target_type = TypeRef::from_ast_opt(src.value.target_type());
- let negative = src.value.is_negative();
+ let is_negative = src.value.is_negative();
let items = if let Some(item_list) = src.value.item_list() {
item_list
Vec::new()
};
- let res = ImplData { target_trait, target_type, items, negative };
+ let res = ImplData { target_trait, target_type, items, is_negative };
Arc::new(res)
}
-
- pub fn target_trait(&self) -> Option<&TypeRef> {
- self.target_trait.as_ref()
- }
-
- pub fn target_type(&self) -> &TypeRef {
- &self.target_type
- }
-
- pub fn items(&self) -> &[AssocItemId] {
- &self.items
- }
-
- pub fn is_negative(&self) -> bool {
- self.negative
- }
}