Add generic arg infer
This commit is contained in:
parent
71a6c7c803
commit
417b098cfc
28 changed files with 265 additions and 89 deletions
|
@ -1188,6 +1188,23 @@ impl<'tcx> Visitor<'tcx> for TypePrivacyVisitor<'tcx> {
|
|||
self.maybe_typeck_results = old_maybe_typeck_results;
|
||||
}
|
||||
|
||||
fn visit_generic_arg(&mut self, generic_arg: &'tcx hir::GenericArg<'tcx>) {
|
||||
match generic_arg {
|
||||
hir::GenericArg::Type(t) => self.visit_ty(t),
|
||||
hir::GenericArg::Infer(inf) => {
|
||||
self.span = inf.span;
|
||||
let parent_hir_id = self.tcx.hir().get_parent_node(inf.hir_id);
|
||||
if let Some(typeck_results) = self.maybe_typeck_results {
|
||||
let node_substs = typeck_results.node_substs(parent_hir_id);
|
||||
for ty in node_substs.types() {
|
||||
self.visit(ty);
|
||||
}
|
||||
}
|
||||
}
|
||||
hir::GenericArg::Lifetime(_) | hir::GenericArg::Const(_) => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_ty(&mut self, hir_ty: &'tcx hir::Ty<'tcx>) {
|
||||
self.span = hir_ty.span;
|
||||
if let Some(typeck_results) = self.maybe_typeck_results {
|
||||
|
@ -1443,6 +1460,14 @@ impl<'a, 'b, 'tcx, 'v> Visitor<'v> for ObsoleteCheckTypeForPrivatenessVisitor<'a
|
|||
NestedVisitorMap::None
|
||||
}
|
||||
|
||||
fn visit_generic_arg(&mut self, generic_arg: &'v hir::GenericArg<'v>) {
|
||||
match generic_arg {
|
||||
hir::GenericArg::Type(t) => self.visit_ty(t),
|
||||
hir::GenericArg::Infer(inf) => self.visit_ty(&inf.to_ty()),
|
||||
hir::GenericArg::Lifetime(_) | hir::GenericArg::Const(_) => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_ty(&mut self, ty: &hir::Ty<'_>) {
|
||||
if let hir::TyKind::Path(hir::QPath::Resolved(_, ref path)) = ty.kind {
|
||||
if self.inner.path_is_private_type(path) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue