Auto merge of #53838 - nrc:save-generic, r=eddyb
save-analysis: record info for the types in `where` clauses cc https://github.com/rust-lang-nursery/rls/issues/987 r? @eddyb
This commit is contained in:
commit
2687112ea6
@ -1362,6 +1362,14 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn process_bounds(&mut self, bounds: &'l ast::GenericBounds) {
|
||||||
|
for bound in bounds {
|
||||||
|
if let ast::GenericBound::Trait(ref trait_ref, _) = *bound {
|
||||||
|
self.process_path(trait_ref.trait_ref.ref_id, &trait_ref.trait_ref.path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll, O> {
|
impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll, O> {
|
||||||
@ -1527,20 +1535,19 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
|
|||||||
|
|
||||||
fn visit_generics(&mut self, generics: &'l ast::Generics) {
|
fn visit_generics(&mut self, generics: &'l ast::Generics) {
|
||||||
for param in &generics.params {
|
for param in &generics.params {
|
||||||
match param.kind {
|
if let ast::GenericParamKind::Type { ref default, .. } = param.kind {
|
||||||
ast::GenericParamKind::Lifetime { .. } => {}
|
self.process_bounds(¶m.bounds);
|
||||||
ast::GenericParamKind::Type { ref default, .. } => {
|
if let Some(ref ty) = default {
|
||||||
for bound in ¶m.bounds {
|
self.visit_ty(&ty);
|
||||||
if let ast::GenericBound::Trait(ref trait_ref, _) = *bound {
|
|
||||||
self.process_path(trait_ref.trait_ref.ref_id, &trait_ref.trait_ref.path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if let Some(ref ty) = default {
|
|
||||||
self.visit_ty(&ty);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for pred in &generics.where_clause.predicates {
|
||||||
|
if let ast::WherePredicate::BoundPredicate(ref wbp) = *pred {
|
||||||
|
self.process_bounds(&wbp.bounds);
|
||||||
|
self.visit_ty(&wbp.bounded_ty);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn visit_ty(&mut self, t: &'l ast::Ty) {
|
fn visit_ty(&mut self, t: &'l ast::Ty) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user