Overhaul the intravisit::Map
trait.
First of all, note that `Map` has three different relevant meanings. - The `intravisit::Map` trait. - The `map::Map` struct. - The `NestedFilter::Map` associated type. The `intravisit::Map` trait is impl'd twice. - For `!`, where the methods are all unreachable. - For `map::Map`, which gets HIR stuff from the `TyCtxt`. As part of getting rid of `map::Map`, this commit changes `impl intravisit::Map for map::Map` to `impl intravisit::Map for TyCtxt`. It's fairly straightforward except various things are renamed, because the existing names would no longer have made sense. - `trait intravisit::Map` becomes `trait intravisit::HirTyCtxt`, so named because it gets some HIR stuff from a `TyCtxt`. - `NestedFilter::Map` assoc type becomes `NestedFilter::MaybeTyCtxt`, because it's always `!` or `TyCtxt`. - `Visitor::nested_visit_map` becomes `Visitor::maybe_tcx`. I deliberately made the new trait and associated type names different to avoid the old `type Map: Map` situation, which I found confusing. We now have `type MaybeTyCtxt: HirTyCtxt`.
This commit is contained in:
parent
f86f7ad5f2
commit
661f99ba03
59 changed files with 208 additions and 210 deletions
|
@ -10,7 +10,6 @@ mod unexpand;
|
|||
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::intravisit::{Visitor, walk_expr};
|
||||
use rustc_middle::hir::map::Map;
|
||||
use rustc_middle::hir::nested_filter;
|
||||
use rustc_middle::mir::coverage::{
|
||||
CoverageKind, DecisionInfo, FunctionCoverageInfo, Mapping, MappingKind,
|
||||
|
@ -348,7 +347,7 @@ fn extract_hole_spans_from_hir<'tcx>(
|
|||
hir_body: &hir::Body<'tcx>,
|
||||
) -> Vec<Span> {
|
||||
struct HolesVisitor<'hir, F> {
|
||||
hir: Map<'hir>,
|
||||
tcx: TyCtxt<'hir>,
|
||||
visit_hole_span: F,
|
||||
}
|
||||
|
||||
|
@ -360,8 +359,8 @@ fn extract_hole_spans_from_hir<'tcx>(
|
|||
/// items contained within them.
|
||||
type NestedFilter = nested_filter::All;
|
||||
|
||||
fn nested_visit_map(&mut self) -> Self::Map {
|
||||
self.hir
|
||||
fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
|
||||
self.tcx
|
||||
}
|
||||
|
||||
fn visit_item(&mut self, item: &'hir hir::Item<'hir>) {
|
||||
|
@ -388,7 +387,7 @@ fn extract_hole_spans_from_hir<'tcx>(
|
|||
|
||||
let mut hole_spans = vec![];
|
||||
let mut visitor = HolesVisitor {
|
||||
hir: tcx.hir(),
|
||||
tcx,
|
||||
visit_hole_span: |hole_span| {
|
||||
// Discard any holes that aren't directly visible within the body span.
|
||||
if body_span.contains(hole_span) && body_span.eq_ctxt(hole_span) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue