Don't store supertraits in ItemTree

This commit is contained in:
Laurențiu Nicola 2021-05-27 16:52:15 +03:00
parent d0a4ba294c
commit 2268a220e4
6 changed files with 3 additions and 17 deletions

View File

@ -427,10 +427,6 @@ impl HirDisplay for Trait {
write!(f, "trait {}", data.name)?; write!(f, "trait {}", data.name)?;
let def_id = GenericDefId::TraitId(self.id); let def_id = GenericDefId::TraitId(self.id);
write_generic_params(def_id, f)?; write_generic_params(def_id, f)?;
if !data.bounds.is_empty() {
write!(f, ": ")?;
f.write_joined(&*data.bounds, " + ")?;
}
write_where_clause(def_id, f)?; write_where_clause(def_id, f)?;
Ok(()) Ok(())
} }

View File

@ -141,7 +141,6 @@ pub struct TraitData {
pub is_auto: bool, pub is_auto: bool,
pub is_unsafe: bool, pub is_unsafe: bool,
pub visibility: RawVisibility, pub visibility: RawVisibility,
pub bounds: Box<[Interned<TypeBound>]>,
} }
impl TraitData { impl TraitData {
@ -155,7 +154,6 @@ impl TraitData {
let module_id = tr_loc.container; let module_id = tr_loc.container;
let container = AssocContainerId::TraitId(tr); let container = AssocContainerId::TraitId(tr);
let visibility = item_tree[tr_def.visibility].clone(); let visibility = item_tree[tr_def.visibility].clone();
let bounds = tr_def.bounds.clone();
let mut expander = Expander::new(db, tr_loc.id.file_id(), module_id); let mut expander = Expander::new(db, tr_loc.id.file_id(), module_id);
let items = collect_items( let items = collect_items(
@ -168,7 +166,7 @@ impl TraitData {
100, 100,
); );
Arc::new(TraitData { name, items, is_auto, is_unsafe, visibility, bounds }) Arc::new(TraitData { name, items, is_auto, is_unsafe, visibility })
} }
pub fn associated_types(&self) -> impl Iterator<Item = TypeAliasId> + '_ { pub fn associated_types(&self) -> impl Iterator<Item = TypeAliasId> + '_ {

View File

@ -661,7 +661,6 @@ pub struct Trait {
pub generic_params: Interned<GenericParams>, pub generic_params: Interned<GenericParams>,
pub is_auto: bool, pub is_auto: bool,
pub is_unsafe: bool, pub is_unsafe: bool,
pub bounds: Box<[Interned<TypeBound>]>,
pub items: Box<[AssocItem]>, pub items: Box<[AssocItem]>,
pub ast_id: FileAstId<ast::Trait>, pub ast_id: FileAstId<ast::Trait>,
} }

View File

@ -474,7 +474,6 @@ impl<'a> Ctx<'a> {
self.lower_generic_params_and_inner_items(GenericsOwner::Trait(trait_def), trait_def); self.lower_generic_params_and_inner_items(GenericsOwner::Trait(trait_def), trait_def);
let is_auto = trait_def.auto_token().is_some(); let is_auto = trait_def.auto_token().is_some();
let is_unsafe = trait_def.unsafe_token().is_some(); let is_unsafe = trait_def.unsafe_token().is_some();
let bounds = self.lower_type_bounds(trait_def);
let items = trait_def.assoc_item_list().map(|list| { let items = trait_def.assoc_item_list().map(|list| {
let db = self.db; let db = self.db;
self.with_inherited_visibility(visibility, |this| { self.with_inherited_visibility(visibility, |this| {
@ -497,7 +496,6 @@ impl<'a> Ctx<'a> {
generic_params, generic_params,
is_auto, is_auto,
is_unsafe, is_unsafe,
bounds: bounds.into(),
items: items.unwrap_or_default(), items: items.unwrap_or_default(),
ast_id, ast_id,
}; };

View File

@ -345,7 +345,6 @@ impl<'a> Printer<'a> {
visibility, visibility,
is_auto, is_auto,
is_unsafe, is_unsafe,
bounds,
items, items,
generic_params, generic_params,
ast_id: _, ast_id: _,
@ -359,10 +358,6 @@ impl<'a> Printer<'a> {
} }
w!(self, "trait {}", name); w!(self, "trait {}", name);
self.print_generic_params(generic_params); self.print_generic_params(generic_params);
if !bounds.is_empty() {
w!(self, ": ");
self.print_type_bounds(bounds);
}
self.print_where_clause_and_opening_brace(generic_params); self.print_where_clause_and_opening_brace(generic_params);
self.indented(|this| { self.indented(|this| {
for item in &**items { for item in &**items {

View File

@ -180,7 +180,7 @@ trait Tr: SuperTrait + 'lifetime {
_: (), _: (),
) -> (); ) -> ();
pub(self) trait Tr<Self>: SuperTrait + 'lifetime pub(self) trait Tr<Self>
where where
Self: SuperTrait, Self: SuperTrait,
Self: 'lifetime Self: 'lifetime
@ -350,7 +350,7 @@ trait Tr<'a, T: 'a>: Super {}
pub(self) union Union<'a, T, const U: u8> { pub(self) union Union<'a, T, const U: u8> {
} }
pub(self) trait Tr<'a, Self, T>: Super pub(self) trait Tr<'a, Self, T>
where where
Self: Super, Self: Super,
T: 'a T: 'a