Skip to content

Commit

Permalink
Auto merge of rust-lang#79441 - jonas-schievink:rollup-l9v00bl, r=jon…
Browse files Browse the repository at this point in the history
…as-schievink

Rollup of 10 pull requests

Successful merges:

 - rust-lang#77758 (suggest turbofish syntax for uninferred const arguments)
 - rust-lang#79000 (Move lev_distance to rustc_ast, make non-generic)
 - rust-lang#79362 (Lower patterns before using the bound variable)
 - rust-lang#79365 (Upgrades the coverage map to Version 4)
 - rust-lang#79402 (Fix typos)
 - rust-lang#79412 (Clean up rustdoc tests by removing unnecessary features)
 - rust-lang#79413 (Fix persisted doctests on Windows / when using workspaces)
 - rust-lang#79420 (Fixes a word typo in librustdoc)
 - rust-lang#79421 (Fix docs formatting for `thir::pattern::_match`)
 - rust-lang#79428 (Fixup compiler docs)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
  • Loading branch information
bors committed Nov 26, 2020
2 parents aefcf1f + 89ab563 commit 0beba93
Show file tree
Hide file tree
Showing 63 changed files with 540 additions and 365 deletions.
1 change: 0 additions & 1 deletion compiler/rustc_ast/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ macro_rules! unwrap_or {
pub mod util {
pub mod classify;
pub mod comments;
pub mod lev_distance;
pub mod literal;
pub mod parser;
}
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_ast_lowering/src/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
let else_arm = self.arm(else_pat, else_expr);

// Handle then + scrutinee:
let then_expr = self.lower_block_expr(then);
let (then_pat, scrutinee, desugar) = match cond.kind {
// `<pat> => <then>`:
ExprKind::Let(ref pat, ref scrutinee) => {
Expand All @@ -375,6 +374,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
(pat, cond, hir::MatchSource::IfDesugar { contains_else_clause })
}
};
let then_expr = self.lower_block_expr(then);
let then_arm = self.arm(then_pat, self.arena.alloc(then_expr));

hir::ExprKind::Match(scrutinee, arena_vec![self; then_arm, else_arm], desugar)
Expand All @@ -400,7 +400,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
};

// Handle then + scrutinee:
let then_expr = self.lower_block_expr(body);
let (then_pat, scrutinee, desugar, source) = match cond.kind {
ExprKind::Let(ref pat, ref scrutinee) => {
// to:
Expand Down Expand Up @@ -440,6 +439,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
(pat, cond, hir::MatchSource::WhileDesugar, hir::LoopSource::While)
}
};
let then_expr = self.lower_block_expr(body);
let then_arm = self.arm(then_pat, self.arena.alloc(then_expr));

// `match <scrutinee> { ... }`
Expand Down
48 changes: 5 additions & 43 deletions compiler/rustc_ast_lowering/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,6 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
/// declared for every type and trait definition.
struct MiscCollector<'tcx, 'lowering, 'hir> {
lctx: &'tcx mut LoweringContext<'lowering, 'hir>,
hir_id_owner: Option<NodeId>,
}

impl MiscCollector<'_, '_, '_> {
Expand All @@ -452,30 +451,9 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
}
}
}

fn with_hir_id_owner<T>(
&mut self,
owner: Option<NodeId>,
f: impl FnOnce(&mut Self) -> T,
) -> T {
let old = mem::replace(&mut self.hir_id_owner, owner);
let r = f(self);
self.hir_id_owner = old;
r
}
}

impl<'tcx> Visitor<'tcx> for MiscCollector<'tcx, '_, '_> {
fn visit_pat(&mut self, p: &'tcx Pat) {
if let PatKind::Paren(..) | PatKind::Rest = p.kind {
// Doesn't generate a HIR node
} else if let Some(owner) = self.hir_id_owner {
self.lctx.lower_node_id_with_owner(p.id, owner);
}

visit::walk_pat(self, p)
}

fn visit_item(&mut self, item: &'tcx Item) {
let hir_id = self.lctx.allocate_hir_id_counter(item.id);

Expand All @@ -499,24 +477,12 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
_ => {}
}

self.with_hir_id_owner(Some(item.id), |this| {
visit::walk_item(this, item);
});
visit::walk_item(self, item);
}

fn visit_assoc_item(&mut self, item: &'tcx AssocItem, ctxt: AssocCtxt) {
self.lctx.allocate_hir_id_counter(item.id);
let owner = match (&item.kind, ctxt) {
// Ignore patterns in trait methods without bodies.
(AssocItemKind::Fn(_, _, _, None), AssocCtxt::Trait) => None,
_ => Some(item.id),
};
self.with_hir_id_owner(owner, |this| visit::walk_assoc_item(this, item, ctxt));
}

fn visit_foreign_item(&mut self, i: &'tcx ForeignItem) {
// Ignore patterns in foreign items
self.with_hir_id_owner(None, |this| visit::walk_foreign_item(this, i));
visit::walk_assoc_item(self, item, ctxt);
}

fn visit_ty(&mut self, t: &'tcx Ty) {
Expand All @@ -527,18 +493,14 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
// Mirrors visit::walk_fn_decl
for parameter in &f.decl.inputs {
// We don't lower the ids of argument patterns
self.with_hir_id_owner(None, |this| {
this.visit_pat(&parameter.pat);
});
self.visit_pat(&parameter.pat);
self.visit_ty(&parameter.ty)
}
self.visit_fn_ret_ty(&f.decl.output)
}
TyKind::ImplTrait(def_node_id, _) => {
self.lctx.allocate_hir_id_counter(def_node_id);
self.with_hir_id_owner(Some(def_node_id), |this| {
visit::walk_ty(this, t);
});
visit::walk_ty(self, t);
}
_ => visit::walk_ty(self, t),
}
Expand All @@ -548,7 +510,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
self.lower_node_id(CRATE_NODE_ID);
debug_assert!(self.node_id_to_hir_id[CRATE_NODE_ID] == Some(hir::CRATE_HIR_ID));

visit::walk_crate(&mut MiscCollector { lctx: &mut self, hir_id_owner: None }, c);
visit::walk_crate(&mut MiscCollector { lctx: &mut self }, c);
visit::walk_crate(&mut item::ItemLowerer { lctx: &mut self }, c);

let module = self.lower_mod(&c.module);
Expand Down
Loading

0 comments on commit 0beba93

Please sign in to comment.