|
| 1 | +use intravisit::InferKind; |
1 | 2 | use rustc_data_structures::sorted_map::SortedMap; |
2 | 3 | use rustc_hir as hir; |
3 | 4 | use rustc_hir::def_id::{LocalDefId, LocalDefIdMap}; |
@@ -265,14 +266,6 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> { |
265 | 266 | }); |
266 | 267 | } |
267 | 268 |
|
268 | | - fn visit_const_arg(&mut self, const_arg: &'hir ConstArg<'hir>) { |
269 | | - self.insert(const_arg.span(), const_arg.hir_id, Node::ConstArg(const_arg)); |
270 | | - |
271 | | - self.with_parent(const_arg.hir_id, |this| { |
272 | | - intravisit::walk_const_arg(this, const_arg); |
273 | | - }); |
274 | | - } |
275 | | - |
276 | 269 | fn visit_expr(&mut self, expr: &'hir Expr<'hir>) { |
277 | 270 | self.insert(expr.span, expr.hir_id, Node::Expr(expr)); |
278 | 271 |
|
@@ -302,22 +295,41 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> { |
302 | 295 | intravisit::walk_path_segment(self, path_segment); |
303 | 296 | } |
304 | 297 |
|
305 | | - fn visit_ty(&mut self, ty: &'hir Ty<'hir>) { |
306 | | - self.insert(ty.span, ty.hir_id, Node::Ty(ty)); |
| 298 | + fn visit_ty(&mut self, ty: &'hir Ty<'hir, AmbigArg>) { |
| 299 | + self.insert(ty.span, ty.hir_id, Node::Ty(ty.as_unambig_ty())); |
307 | 300 |
|
308 | 301 | self.with_parent(ty.hir_id, |this| { |
309 | 302 | intravisit::walk_ty(this, ty); |
310 | 303 | }); |
311 | 304 | } |
312 | 305 |
|
313 | | - fn visit_infer(&mut self, inf: &'hir InferArg) { |
314 | | - self.insert(inf.span, inf.hir_id, Node::Infer(inf)); |
| 306 | + fn visit_const_arg(&mut self, const_arg: &'hir ConstArg<'hir, AmbigArg>) { |
| 307 | + self.insert( |
| 308 | + const_arg.as_unambig_ct().span(), |
| 309 | + const_arg.hir_id, |
| 310 | + Node::ConstArg(const_arg.as_unambig_ct()), |
| 311 | + ); |
315 | 312 |
|
316 | | - self.with_parent(inf.hir_id, |this| { |
317 | | - intravisit::walk_inf(this, inf); |
| 313 | + self.with_parent(const_arg.hir_id, |this| { |
| 314 | + intravisit::walk_ambig_const_arg(this, const_arg); |
318 | 315 | }); |
319 | 316 | } |
320 | 317 |
|
| 318 | + fn visit_infer( |
| 319 | + &mut self, |
| 320 | + inf_id: HirId, |
| 321 | + inf_span: Span, |
| 322 | + kind: InferKind<'hir>, |
| 323 | + ) -> Self::Result { |
| 324 | + match kind { |
| 325 | + InferKind::Ty(ty) => self.insert(inf_span, inf_id, Node::Ty(ty)), |
| 326 | + InferKind::Const(ct) => self.insert(inf_span, inf_id, Node::ConstArg(ct)), |
| 327 | + InferKind::Ambig(inf) => self.insert(inf_span, inf_id, Node::Infer(inf)), |
| 328 | + } |
| 329 | + |
| 330 | + self.visit_id(inf_id); |
| 331 | + } |
| 332 | + |
321 | 333 | fn visit_trait_ref(&mut self, tr: &'hir TraitRef<'hir>) { |
322 | 334 | self.insert(tr.path.span, tr.hir_ref_id, Node::TraitRef(tr)); |
323 | 335 |
|
|
0 commit comments