mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 02:00:00 +03:00
hir: remove LoweredNodeId
This commit is contained in:
+107
-202
@@ -260,12 +260,6 @@ enum ParamMode {
|
||||
Optional,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct LoweredNodeId {
|
||||
node_id: NodeId,
|
||||
hir_id: hir::HirId,
|
||||
}
|
||||
|
||||
enum ParenthesizedGenericArgs {
|
||||
Ok,
|
||||
Warn,
|
||||
@@ -429,7 +423,7 @@ fn allocate_use_tree_hir_id_counters(
|
||||
UseTreeKind::Glob => (),
|
||||
UseTreeKind::Nested(ref trees) => {
|
||||
for &(ref use_tree, id) in trees {
|
||||
let hir_id = self.lctx.allocate_hir_id_counter(id).hir_id;
|
||||
let hir_id = self.lctx.allocate_hir_id_counter(id);
|
||||
self.allocate_use_tree_hir_id_counters(use_tree, hir_id.owner);
|
||||
}
|
||||
}
|
||||
@@ -489,7 +483,7 @@ fn visit_fn(&mut self, fk: visit::FnKind<'lcx>, fd: &'lcx FnDecl, s: Span, _: No
|
||||
}
|
||||
|
||||
fn visit_item(&mut self, item: &'lcx Item) {
|
||||
let hir_id = self.lctx.allocate_hir_id_counter(item.id).hir_id;
|
||||
let hir_id = self.lctx.allocate_hir_id_counter(item.id);
|
||||
|
||||
match item.node {
|
||||
ItemKind::Struct(_, ref generics)
|
||||
@@ -698,24 +692,21 @@ fn insert_item(&mut self, item: hir::Item) {
|
||||
self.modules.get_mut(&self.current_module).unwrap().items.insert(id);
|
||||
}
|
||||
|
||||
fn allocate_hir_id_counter(&mut self, owner: NodeId) -> LoweredNodeId {
|
||||
fn allocate_hir_id_counter(&mut self, owner: NodeId) -> hir::HirId {
|
||||
// Setup the counter if needed
|
||||
self.item_local_id_counters.entry(owner).or_insert(0);
|
||||
// Always allocate the first `HirId` for the owner itself.
|
||||
let lowered = self.lower_node_id_with_owner(owner, owner);
|
||||
debug_assert_eq!(lowered.hir_id.local_id.as_u32(), 0);
|
||||
debug_assert_eq!(lowered.local_id.as_u32(), 0);
|
||||
lowered
|
||||
}
|
||||
|
||||
fn lower_node_id_generic<F>(&mut self, ast_node_id: NodeId, alloc_hir_id: F) -> LoweredNodeId
|
||||
fn lower_node_id_generic<F>(&mut self, ast_node_id: NodeId, alloc_hir_id: F) -> hir::HirId
|
||||
where
|
||||
F: FnOnce(&mut Self) -> hir::HirId,
|
||||
{
|
||||
if ast_node_id == DUMMY_NODE_ID {
|
||||
return LoweredNodeId {
|
||||
node_id: DUMMY_NODE_ID,
|
||||
hir_id: hir::DUMMY_HIR_ID,
|
||||
};
|
||||
return hir::DUMMY_HIR_ID;
|
||||
}
|
||||
|
||||
let min_size = ast_node_id.as_usize() + 1;
|
||||
@@ -730,15 +721,10 @@ fn lower_node_id_generic<F>(&mut self, ast_node_id: NodeId, alloc_hir_id: F) ->
|
||||
// Generate a new `HirId`.
|
||||
let hir_id = alloc_hir_id(self);
|
||||
self.node_id_to_hir_id[ast_node_id] = hir_id;
|
||||
LoweredNodeId {
|
||||
node_id: ast_node_id,
|
||||
hir_id,
|
||||
}
|
||||
|
||||
hir_id
|
||||
} else {
|
||||
LoweredNodeId {
|
||||
node_id: ast_node_id,
|
||||
hir_id: existing_hir_id,
|
||||
}
|
||||
existing_hir_id
|
||||
}
|
||||
}
|
||||
|
||||
@@ -770,7 +756,7 @@ fn with_hir_id_owner<F, T>(&mut self, owner: NodeId, f: F) -> T
|
||||
/// actually used in the HIR, as that would trigger an assertion in the
|
||||
/// `HirIdValidator` later on, which makes sure that all `NodeId`s got mapped
|
||||
/// properly. Calling the method twice with the same `NodeId` is fine though.
|
||||
fn lower_node_id(&mut self, ast_node_id: NodeId) -> LoweredNodeId {
|
||||
fn lower_node_id(&mut self, ast_node_id: NodeId) -> hir::HirId {
|
||||
self.lower_node_id_generic(ast_node_id, |this| {
|
||||
let &mut (def_index, ref mut local_id_counter) =
|
||||
this.current_hir_id_owner.last_mut().unwrap();
|
||||
@@ -783,7 +769,7 @@ fn lower_node_id(&mut self, ast_node_id: NodeId) -> LoweredNodeId {
|
||||
})
|
||||
}
|
||||
|
||||
fn lower_node_id_with_owner(&mut self, ast_node_id: NodeId, owner: NodeId) -> LoweredNodeId {
|
||||
fn lower_node_id_with_owner(&mut self, ast_node_id: NodeId, owner: NodeId) -> hir::HirId {
|
||||
self.lower_node_id_generic(ast_node_id, |this| {
|
||||
let local_id_counter = this
|
||||
.item_local_id_counters
|
||||
@@ -822,7 +808,7 @@ fn record_body(&mut self, value: hir::Expr, arguments: HirVec<hir::Arg>) -> hir:
|
||||
id
|
||||
}
|
||||
|
||||
fn next_id(&mut self) -> LoweredNodeId {
|
||||
fn next_id(&mut self) -> hir::HirId {
|
||||
self.lower_node_id(self.sess.next_node_id())
|
||||
}
|
||||
|
||||
@@ -830,7 +816,7 @@ fn lower_def(&mut self, def: Def<NodeId>) -> Def {
|
||||
def.map_id(|id| {
|
||||
self.lower_node_id_generic(id, |_| {
|
||||
panic!("expected node_id to be lowered already for def {:#?}", def)
|
||||
}).hir_id
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -942,7 +928,7 @@ fn lifetime_to_generic_param(
|
||||
hir_name: ParamName,
|
||||
parent_index: DefIndex,
|
||||
) -> hir::GenericParam {
|
||||
let LoweredNodeId { node_id, hir_id } = self.next_id();
|
||||
let node_id = self.sess.next_node_id();
|
||||
|
||||
// Get the name we'll use to make the def-path. Note
|
||||
// that collisions are ok here and this shouldn't
|
||||
@@ -973,7 +959,7 @@ fn lifetime_to_generic_param(
|
||||
);
|
||||
|
||||
hir::GenericParam {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(node_id),
|
||||
name: hir_name,
|
||||
attrs: hir_vec![],
|
||||
bounds: hir_vec![],
|
||||
@@ -1158,10 +1144,9 @@ fn make_async_expr(
|
||||
self.is_generator = prev_is_generator;
|
||||
|
||||
let capture_clause = self.lower_capture_clause(capture_clause);
|
||||
let closure_hir_id = self.lower_node_id(closure_node_id).hir_id;
|
||||
let decl = self.lower_fn_decl(&decl, None, /* impl trait allowed */ false, None);
|
||||
let generator = hir::Expr {
|
||||
hir_id: closure_hir_id,
|
||||
hir_id: self.lower_node_id(closure_node_id),
|
||||
node: hir::ExprKind::Closure(capture_clause, decl, body_id, span,
|
||||
Some(hir::GeneratorMovability::Static)),
|
||||
span,
|
||||
@@ -1267,7 +1252,7 @@ fn lower_loop_destination(&mut self, destination: Option<(NodeId, Label)>) -> hi
|
||||
let target_id = match destination {
|
||||
Some((id, _)) => {
|
||||
if let Def::Label(loop_id) = self.expect_full_def(id) {
|
||||
Ok(self.lower_node_id(loop_id).hir_id)
|
||||
Ok(self.lower_node_id(loop_id))
|
||||
} else {
|
||||
Err(hir::LoopIdError::UnresolvedLabel)
|
||||
}
|
||||
@@ -1276,7 +1261,7 @@ fn lower_loop_destination(&mut self, destination: Option<(NodeId, Label)>) -> hi
|
||||
self.loop_scopes
|
||||
.last()
|
||||
.cloned()
|
||||
.map(|id| Ok(self.lower_node_id(id).hir_id))
|
||||
.map(|id| Ok(self.lower_node_id(id)))
|
||||
.unwrap_or(Err(hir::LoopIdError::OutsideLoopScope))
|
||||
.into()
|
||||
}
|
||||
@@ -1350,10 +1335,8 @@ fn lower_arm(&mut self, arm: &Arm) -> hir::Arm {
|
||||
|
||||
fn lower_ty_binding(&mut self, b: &TypeBinding,
|
||||
itctx: ImplTraitContext<'_>) -> hir::TypeBinding {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(b.id);
|
||||
|
||||
hir::TypeBinding {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(b.id),
|
||||
ident: b.ident,
|
||||
ty: self.lower_ty(&b.ty, itctx),
|
||||
span: b.span,
|
||||
@@ -1487,7 +1470,6 @@ fn lower_ty_direct(&mut self, t: &Ty, mut itctx: ImplTraitContext<'_>) -> hir::T
|
||||
)
|
||||
}
|
||||
ImplTraitContext::Universal(in_band_ty_params) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(def_node_id);
|
||||
// Add a definition for the in-band `Param`.
|
||||
let def_index = self
|
||||
.resolver
|
||||
@@ -1502,7 +1484,7 @@ fn lower_ty_direct(&mut self, t: &Ty, mut itctx: ImplTraitContext<'_>) -> hir::T
|
||||
// Set the name to `impl Bound1 + Bound2`.
|
||||
let ident = Ident::from_str(&pprust::ty_to_string(t)).with_span_pos(span);
|
||||
in_band_ty_params.push(hir::GenericParam {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(def_node_id),
|
||||
name: ParamName::Plain(ident),
|
||||
pure_wrt_drop: false,
|
||||
attrs: hir_vec![],
|
||||
@@ -1557,11 +1539,10 @@ fn lower_ty_direct(&mut self, t: &Ty, mut itctx: ImplTraitContext<'_>) -> hir::T
|
||||
},
|
||||
};
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(t.id);
|
||||
hir::Ty {
|
||||
node: kind,
|
||||
span: t.span,
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(t.id),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1600,12 +1581,11 @@ fn lower_existential_impl_trait(
|
||||
);
|
||||
|
||||
self.with_hir_id_owner(exist_ty_node_id, |lctx| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = lctx.next_id();
|
||||
let exist_ty_item = hir::ExistTy {
|
||||
generics: hir::Generics {
|
||||
params: lifetime_defs,
|
||||
where_clause: hir::WhereClause {
|
||||
hir_id,
|
||||
hir_id: lctx.next_id(),
|
||||
predicates: hir_vec![],
|
||||
},
|
||||
span,
|
||||
@@ -1624,7 +1604,7 @@ fn lower_existential_impl_trait(
|
||||
);
|
||||
|
||||
// `impl Trait` now just becomes `Foo<'a, 'b, ..>`.
|
||||
hir::TyKind::Def(hir::ItemId { id: exist_ty_id.hir_id }, lifetimes)
|
||||
hir::TyKind::Def(hir::ItemId { id: exist_ty_id }, lifetimes)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1636,13 +1616,13 @@ fn generate_existential_type(
|
||||
exist_ty_item: hir::ExistTy,
|
||||
span: Span,
|
||||
exist_ty_span: Span,
|
||||
) -> LoweredNodeId {
|
||||
) -> hir::HirId {
|
||||
let exist_ty_item_kind = hir::ItemKind::Existential(exist_ty_item);
|
||||
let exist_ty_id = self.lower_node_id(exist_ty_node_id);
|
||||
// Generate an `existential type Foo: Trait;` declaration.
|
||||
trace!("registering existential type with id {:#?}", exist_ty_id);
|
||||
let exist_ty_item = hir::Item {
|
||||
hir_id: exist_ty_id.hir_id,
|
||||
hir_id: exist_ty_id,
|
||||
ident: keywords::Invalid.ident(),
|
||||
attrs: Default::default(),
|
||||
node: exist_ty_item_kind,
|
||||
@@ -1757,15 +1737,14 @@ fn visit_lifetime(&mut self, lifetime: &'v hir::Lifetime) {
|
||||
&& !self.already_defined_lifetimes.contains(&name) {
|
||||
self.already_defined_lifetimes.insert(name);
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.context.next_id();
|
||||
self.output_lifetimes.push(hir::GenericArg::Lifetime(hir::Lifetime {
|
||||
hir_id,
|
||||
hir_id: self.context.next_id(),
|
||||
span: lifetime.span,
|
||||
name,
|
||||
}));
|
||||
|
||||
let def_node_id = self.context.sess.next_node_id();
|
||||
let LoweredNodeId { node_id: _, hir_id } =
|
||||
let hir_id =
|
||||
self.context.lower_node_id_with_owner(def_node_id, self.exist_ty_id);
|
||||
self.context.resolver.definitions().create_def_with_parent(
|
||||
self.parent,
|
||||
@@ -1840,11 +1819,10 @@ fn lower_global_asm(&mut self, ga: &GlobalAsm) -> P<hir::GlobalAsm> {
|
||||
}
|
||||
|
||||
fn lower_variant(&mut self, v: &Variant) -> hir::Variant {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(v.node.id);
|
||||
Spanned {
|
||||
node: hir::VariantKind {
|
||||
ident: v.node.ident,
|
||||
id: hir_id,
|
||||
id: self.lower_node_id(v.node.id),
|
||||
attrs: self.lower_attrs(&v.node.attrs),
|
||||
data: self.lower_variant_data(&v.node.data),
|
||||
disr_expr: v.node.disr_expr.as_ref().map(|e| self.lower_anon_const(e)),
|
||||
@@ -2157,7 +2135,7 @@ fn lower_path_segment(
|
||||
|
||||
hir::PathSegment::new(
|
||||
segment.ident,
|
||||
Some(id.hir_id),
|
||||
Some(id),
|
||||
Some(self.lower_def(def)),
|
||||
generic_args,
|
||||
infer_types,
|
||||
@@ -2201,17 +2179,14 @@ fn lower_parenthesized_parameter_data(
|
||||
.map(|ty| this.lower_ty_direct(ty, ImplTraitContext::disallowed()))
|
||||
.collect();
|
||||
let mk_tup = |this: &mut Self, tys, span| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = this.next_id();
|
||||
hir::Ty { node: hir::TyKind::Tup(tys), hir_id, span }
|
||||
hir::Ty { node: hir::TyKind::Tup(tys), hir_id: this.next_id(), span }
|
||||
};
|
||||
let LoweredNodeId { node_id: _, hir_id } = this.next_id();
|
||||
|
||||
(
|
||||
hir::GenericArgs {
|
||||
args: hir_vec![GenericArg::Type(mk_tup(this, inputs, span))],
|
||||
bindings: hir_vec![
|
||||
hir::TypeBinding {
|
||||
hir_id,
|
||||
hir_id: this.next_id(),
|
||||
ident: Ident::from_str(FN_OUTPUT_NAME),
|
||||
ty: output
|
||||
.as_ref()
|
||||
@@ -2229,7 +2204,6 @@ fn lower_parenthesized_parameter_data(
|
||||
}
|
||||
|
||||
fn lower_local(&mut self, l: &Local) -> (hir::Local, SmallVec<[NodeId; 1]>) {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(l.id);
|
||||
let mut ids = SmallVec::<[NodeId; 1]>::new();
|
||||
if self.sess.features_untracked().impl_trait_in_bindings {
|
||||
if let Some(ref ty) = l.ty {
|
||||
@@ -2239,7 +2213,7 @@ fn lower_parenthesized_parameter_data(
|
||||
}
|
||||
let parent_def_id = DefId::local(self.current_hir_id_owner.last().unwrap().0);
|
||||
(hir::Local {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(l.id),
|
||||
ty: l.ty
|
||||
.as_ref()
|
||||
.map(|t| self.lower_ty(t,
|
||||
@@ -2276,9 +2250,8 @@ fn lower_args(&mut self, decl: Option<&FnDecl>) -> HirVec<hir::Arg> {
|
||||
}
|
||||
|
||||
fn lower_arg(&mut self, arg: &Arg) -> hir::Arg {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(arg.id);
|
||||
hir::Arg {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(arg.id),
|
||||
pat: self.lower_pat(&arg.pat),
|
||||
source: self.lower_arg_source(&arg.source),
|
||||
}
|
||||
@@ -2437,7 +2410,7 @@ fn lower_async_fn_ret_ty(
|
||||
|
||||
self.allocate_hir_id_counter(exist_ty_node_id);
|
||||
|
||||
let (exist_ty_node_id, lifetime_params) = self.with_hir_id_owner(exist_ty_node_id, |this| {
|
||||
let (exist_ty_id, lifetime_params) = self.with_hir_id_owner(exist_ty_node_id, |this| {
|
||||
let future_bound = this.with_anonymous_lifetime_mode(
|
||||
AnonymousLifetimeMode::Replace(elided_lt_replacement),
|
||||
|this| this.lower_async_fn_output_type_to_future_bound(
|
||||
@@ -2468,12 +2441,11 @@ fn lower_async_fn_ret_ty(
|
||||
})
|
||||
.collect();
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = this.next_id();
|
||||
let exist_ty_item = hir::ExistTy {
|
||||
generics: hir::Generics {
|
||||
params: generic_params,
|
||||
where_clause: hir::WhereClause {
|
||||
hir_id,
|
||||
hir_id: this.next_id(),
|
||||
predicates: hir_vec![],
|
||||
},
|
||||
span,
|
||||
@@ -2491,30 +2463,27 @@ fn lower_async_fn_ret_ty(
|
||||
exist_ty_span,
|
||||
);
|
||||
|
||||
(exist_ty_id.node_id, lifetime_params)
|
||||
(exist_ty_id, lifetime_params)
|
||||
});
|
||||
|
||||
let generic_args =
|
||||
lifetime_params
|
||||
.iter().cloned()
|
||||
.map(|(span, hir_name)| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
GenericArg::Lifetime(hir::Lifetime {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
span,
|
||||
name: hir::LifetimeName::Param(hir_name),
|
||||
})
|
||||
})
|
||||
.collect();
|
||||
|
||||
let exist_ty_hir_id = self.lower_node_id(exist_ty_node_id).hir_id;
|
||||
let exist_ty_ref = hir::TyKind::Def(hir::ItemId { id: exist_ty_hir_id }, generic_args);
|
||||
let exist_ty_ref = hir::TyKind::Def(hir::ItemId { id: exist_ty_id }, generic_args);
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
hir::FunctionRetTy::Return(P(hir::Ty {
|
||||
node: exist_ty_ref,
|
||||
span,
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -2531,9 +2500,8 @@ fn lower_async_fn_output_type_to_future_bound(
|
||||
self.lower_ty(ty, ImplTraitContext::Existential(Some(fn_def_id)))
|
||||
}
|
||||
FunctionRetTy::Default(ret_ty_span) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
P(hir::Ty {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node: hir::TyKind::Tup(hir_vec![]),
|
||||
span: *ret_ty_span,
|
||||
})
|
||||
@@ -2541,13 +2509,12 @@ fn lower_async_fn_output_type_to_future_bound(
|
||||
};
|
||||
|
||||
// "<Output = T>"
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let future_params = P(hir::GenericArgs {
|
||||
args: hir_vec![],
|
||||
bindings: hir_vec![hir::TypeBinding {
|
||||
ident: Ident::from_str(FN_OUTPUT_NAME),
|
||||
ty: output_ty,
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
span,
|
||||
}],
|
||||
parenthesized: false,
|
||||
@@ -2557,12 +2524,11 @@ fn lower_async_fn_output_type_to_future_bound(
|
||||
let future_path =
|
||||
self.std_path(span, &["future", "Future"], Some(future_params), false);
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
hir::GenericBound::Trait(
|
||||
hir::PolyTraitRef {
|
||||
trait_ref: hir::TraitRef {
|
||||
path: future_path,
|
||||
hir_ref_id: hir_id,
|
||||
hir_ref_id: self.next_id(),
|
||||
},
|
||||
bound_generic_params: hir_vec![],
|
||||
span,
|
||||
@@ -2608,7 +2574,7 @@ fn lower_lifetime(&mut self, l: &Lifetime) -> hir::Lifetime {
|
||||
AnonymousLifetimeMode::ReportError => self.new_error_lifetime(Some(l.id), span),
|
||||
|
||||
AnonymousLifetimeMode::Replace(replacement) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(l.id);
|
||||
let hir_id = self.lower_node_id(l.id);
|
||||
self.replace_elided_lifetime(hir_id, span, replacement)
|
||||
}
|
||||
},
|
||||
@@ -2626,10 +2592,8 @@ fn new_named_lifetime(
|
||||
span: Span,
|
||||
name: hir::LifetimeName,
|
||||
) -> hir::Lifetime {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(id);
|
||||
|
||||
hir::Lifetime {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(id),
|
||||
span,
|
||||
name: name,
|
||||
}
|
||||
@@ -2751,10 +2715,8 @@ fn lower_generic_param(&mut self,
|
||||
}
|
||||
};
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(param.id);
|
||||
|
||||
hir::GenericParam {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(param.id),
|
||||
name,
|
||||
span: param.ident.span,
|
||||
pure_wrt_drop: attr::contains_name(¶m.attrs, "may_dangle"),
|
||||
@@ -2834,10 +2796,8 @@ fn lower_where_clause(&mut self, wc: &WhereClause) -> hir::WhereClause {
|
||||
self.with_anonymous_lifetime_mode(
|
||||
AnonymousLifetimeMode::ReportError,
|
||||
|this| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = this.lower_node_id(wc.id);
|
||||
|
||||
hir::WhereClause {
|
||||
hir_id,
|
||||
hir_id: this.lower_node_id(wc.id),
|
||||
predicates: wc.predicates
|
||||
.iter()
|
||||
.map(|predicate| this.lower_where_predicate(predicate))
|
||||
@@ -2897,10 +2857,8 @@ fn lower_where_predicate(&mut self, pred: &WherePredicate) -> hir::WherePredicat
|
||||
ref rhs_ty,
|
||||
span,
|
||||
}) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(id);
|
||||
|
||||
hir::WherePredicate::EqPredicate(hir::WhereEqPredicate {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(id),
|
||||
lhs_ty: self.lower_ty(lhs_ty, ImplTraitContext::disallowed()),
|
||||
rhs_ty: self.lower_ty(rhs_ty, ImplTraitContext::disallowed()),
|
||||
span,
|
||||
@@ -2916,20 +2874,17 @@ fn lower_variant_data(&mut self, vdata: &VariantData) -> hir::VariantData {
|
||||
recovered,
|
||||
),
|
||||
VariantData::Tuple(ref fields, id) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(id);
|
||||
|
||||
hir::VariantData::Tuple(
|
||||
fields
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|f| self.lower_struct_field(f))
|
||||
.collect(),
|
||||
hir_id,
|
||||
self.lower_node_id(id),
|
||||
)
|
||||
},
|
||||
VariantData::Unit(id) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(id);
|
||||
hir::VariantData::Unit(hir_id)
|
||||
hir::VariantData::Unit(self.lower_node_id(id))
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -2939,10 +2894,9 @@ fn lower_trait_ref(&mut self, p: &TraitRef, itctx: ImplTraitContext<'_>) -> hir:
|
||||
hir::QPath::Resolved(None, path) => path.and_then(|path| path),
|
||||
qpath => bug!("lower_trait_ref: unexpected QPath `{:?}`", qpath),
|
||||
};
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(p.ref_id);
|
||||
hir::TraitRef {
|
||||
path,
|
||||
hir_ref_id: hir_id,
|
||||
hir_ref_id: self.lower_node_id(p.ref_id),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2969,11 +2923,9 @@ fn lower_poly_trait_ref(
|
||||
}
|
||||
|
||||
fn lower_struct_field(&mut self, (index, f): (usize, &StructField)) -> hir::StructField {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(f.id);
|
||||
|
||||
hir::StructField {
|
||||
span: f.span,
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(f.id),
|
||||
ident: match f.ident {
|
||||
Some(ident) => ident,
|
||||
// FIXME(jseyfried): positional field hygiene
|
||||
@@ -2986,10 +2938,8 @@ fn lower_struct_field(&mut self, (index, f): (usize, &StructField)) -> hir::Stru
|
||||
}
|
||||
|
||||
fn lower_field(&mut self, f: &Field) -> hir::Field {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
|
||||
hir::Field {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
ident: f.ident,
|
||||
expr: P(self.lower_expr(&f.expr)),
|
||||
span: f.span,
|
||||
@@ -3026,10 +2976,8 @@ fn lower_block(&mut self, b: &Block, targeted_by_break: bool) -> P<hir::Block> {
|
||||
}
|
||||
}
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(b.id);
|
||||
|
||||
P(hir::Block {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(b.id),
|
||||
stmts: stmts.into(),
|
||||
expr,
|
||||
rules: self.lower_block_check_mode(&b.rules),
|
||||
@@ -3220,7 +3168,7 @@ fn lower_item_kind(
|
||||
// method, it will not be considered an in-band
|
||||
// lifetime to be added, but rather a reference to a
|
||||
// parent lifetime.
|
||||
let lowered_trait_impl_id = self.lower_node_id(id).hir_id;
|
||||
let lowered_trait_impl_id = self.lower_node_id(id);
|
||||
let (generics, (trait_ref, lowered_ty)) = self.add_in_band_defs(
|
||||
ast_generics,
|
||||
def_id,
|
||||
@@ -3358,11 +3306,10 @@ fn lower_use_tree(
|
||||
hir::VisibilityKind::Crate(sugar) => hir::VisibilityKind::Crate(sugar),
|
||||
hir::VisibilityKind::Inherited => hir::VisibilityKind::Inherited,
|
||||
hir::VisibilityKind::Restricted { ref path, hir_id: _ } => {
|
||||
let id = this.next_id();
|
||||
let path = this.renumber_segment_ids(path);
|
||||
hir::VisibilityKind::Restricted {
|
||||
path,
|
||||
hir_id: id.hir_id,
|
||||
hir_id: this.next_id(),
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -3370,7 +3317,7 @@ fn lower_use_tree(
|
||||
|
||||
this.insert_item(
|
||||
hir::Item {
|
||||
hir_id: new_id.hir_id,
|
||||
hir_id: new_id,
|
||||
ident,
|
||||
attrs: attrs.clone(),
|
||||
node: item,
|
||||
@@ -3428,10 +3375,7 @@ fn lower_use_tree(
|
||||
|
||||
// Add all the nested `PathListItem`s to the HIR.
|
||||
for &(ref use_tree, id) in trees {
|
||||
let LoweredNodeId {
|
||||
node_id: new_id,
|
||||
hir_id: new_hir_id,
|
||||
} = self.lower_node_id(id);
|
||||
let new_hir_id = self.lower_node_id(id);
|
||||
|
||||
let mut vis = vis.clone();
|
||||
let mut ident = ident.clone();
|
||||
@@ -3447,10 +3391,10 @@ fn lower_use_tree(
|
||||
// the current owner, since we want each desugared import to
|
||||
// own its own names, we have to adjust the owner before
|
||||
// lowering the rest of the import.
|
||||
self.with_hir_id_owner(new_id, |this| {
|
||||
self.with_hir_id_owner(id, |this| {
|
||||
let item = this.lower_use_tree(use_tree,
|
||||
&prefix,
|
||||
new_id,
|
||||
id,
|
||||
&mut vis,
|
||||
&mut ident,
|
||||
attrs);
|
||||
@@ -3460,11 +3404,10 @@ fn lower_use_tree(
|
||||
hir::VisibilityKind::Crate(sugar) => hir::VisibilityKind::Crate(sugar),
|
||||
hir::VisibilityKind::Inherited => hir::VisibilityKind::Inherited,
|
||||
hir::VisibilityKind::Restricted { ref path, hir_id: _ } => {
|
||||
let id = this.next_id();
|
||||
let path = this.renumber_segment_ids(path);
|
||||
hir::VisibilityKind::Restricted {
|
||||
path: path,
|
||||
hir_id: id.hir_id,
|
||||
hir_id: this.next_id(),
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -3520,15 +3463,14 @@ fn renumber_segment_ids(&mut self, path: &P<hir::Path>) -> P<hir::Path> {
|
||||
let mut path = path.clone();
|
||||
for seg in path.segments.iter_mut() {
|
||||
if seg.hir_id.is_some() {
|
||||
seg.hir_id = Some(self.next_id().hir_id);
|
||||
seg.hir_id = Some(self.next_id());
|
||||
}
|
||||
}
|
||||
path
|
||||
}
|
||||
|
||||
fn lower_trait_item(&mut self, i: &TraitItem) -> hir::TraitItem {
|
||||
let LoweredNodeId { node_id, hir_id } = self.lower_node_id(i.id);
|
||||
let trait_item_def_id = self.resolver.definitions().local_def_id(node_id);
|
||||
let trait_item_def_id = self.resolver.definitions().local_def_id(i.id);
|
||||
|
||||
let (generics, node) = match i.node {
|
||||
TraitItemKind::Const(ref ty, ref default) => (
|
||||
@@ -3578,7 +3520,7 @@ fn lower_trait_item(&mut self, i: &TraitItem) -> hir::TraitItem {
|
||||
};
|
||||
|
||||
hir::TraitItem {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(i.id),
|
||||
ident: i.ident,
|
||||
attrs: self.lower_attrs(&i.attrs),
|
||||
generics,
|
||||
@@ -3604,7 +3546,7 @@ fn lower_trait_item_ref(&mut self, i: &TraitItem) -> hir::TraitItemRef {
|
||||
TraitItemKind::Macro(..) => unimplemented!(),
|
||||
};
|
||||
hir::TraitItemRef {
|
||||
id: hir::TraitItemId { hir_id: self.lower_node_id(i.id).hir_id },
|
||||
id: hir::TraitItemId { hir_id: self.lower_node_id(i.id) },
|
||||
ident: i.ident,
|
||||
span: i.span,
|
||||
defaultness: self.lower_defaultness(Defaultness::Default, has_default),
|
||||
@@ -3613,8 +3555,7 @@ fn lower_trait_item_ref(&mut self, i: &TraitItem) -> hir::TraitItemRef {
|
||||
}
|
||||
|
||||
fn lower_impl_item(&mut self, i: &ImplItem) -> hir::ImplItem {
|
||||
let LoweredNodeId { node_id, hir_id } = self.lower_node_id(i.id);
|
||||
let impl_item_def_id = self.resolver.definitions().local_def_id(node_id);
|
||||
let impl_item_def_id = self.resolver.definitions().local_def_id(i.id);
|
||||
|
||||
let (generics, node) = match i.node {
|
||||
ImplItemKind::Const(ref ty, ref expr) => {
|
||||
@@ -3671,7 +3612,7 @@ fn lower_impl_item(&mut self, i: &ImplItem) -> hir::ImplItem {
|
||||
};
|
||||
|
||||
hir::ImplItem {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(i.id),
|
||||
ident: i.ident,
|
||||
attrs: self.lower_attrs(&i.attrs),
|
||||
generics,
|
||||
@@ -3686,7 +3627,7 @@ fn lower_impl_item(&mut self, i: &ImplItem) -> hir::ImplItem {
|
||||
|
||||
fn lower_impl_item_ref(&mut self, i: &ImplItem) -> hir::ImplItemRef {
|
||||
hir::ImplItemRef {
|
||||
id: hir::ImplItemId { hir_id: self.lower_node_id(i.id).hir_id },
|
||||
id: hir::ImplItemId { hir_id: self.lower_node_id(i.id) },
|
||||
ident: i.ident,
|
||||
span: i.span,
|
||||
vis: self.lower_visibility(&i.vis, Some(i.id)),
|
||||
@@ -3742,7 +3683,7 @@ fn lower_mod(&mut self, m: &Mod) -> hir::Mod {
|
||||
};
|
||||
|
||||
node_ids.into_iter().map(|node_id| hir::ItemId {
|
||||
id: self.allocate_hir_id_counter(node_id).hir_id
|
||||
id: self.allocate_hir_id_counter(node_id)
|
||||
}).collect()
|
||||
}
|
||||
|
||||
@@ -3776,7 +3717,7 @@ pub fn lower_item(&mut self, i: &Item) -> Option<hir::Item> {
|
||||
if !def.legacy || attr::contains_name(&i.attrs, "macro_export") ||
|
||||
attr::contains_name(&i.attrs, "rustc_doc_only_macro") {
|
||||
let body = self.lower_token_stream(def.stream());
|
||||
let hir_id = self.lower_node_id(i.id).hir_id;
|
||||
let hir_id = self.lower_node_id(i.id);
|
||||
self.exported_macros.push(hir::MacroDef {
|
||||
name: ident.name,
|
||||
vis,
|
||||
@@ -3792,10 +3733,8 @@ pub fn lower_item(&mut self, i: &Item) -> Option<hir::Item> {
|
||||
|
||||
let node = self.lower_item_kind(i.id, &mut ident, &attrs, &mut vis, &i.node);
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(i.id);
|
||||
|
||||
Some(hir::Item {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(i.id),
|
||||
ident,
|
||||
attrs,
|
||||
node,
|
||||
@@ -3805,10 +3744,9 @@ pub fn lower_item(&mut self, i: &Item) -> Option<hir::Item> {
|
||||
}
|
||||
|
||||
fn lower_foreign_item(&mut self, i: &ForeignItem) -> hir::ForeignItem {
|
||||
let LoweredNodeId { node_id, hir_id } = self.lower_node_id(i.id);
|
||||
let def_id = self.resolver.definitions().local_def_id(node_id);
|
||||
let def_id = self.resolver.definitions().local_def_id(i.id);
|
||||
hir::ForeignItem {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(i.id),
|
||||
ident: i.ident,
|
||||
attrs: self.lower_attrs(&i.attrs),
|
||||
node: match i.node {
|
||||
@@ -3948,7 +3886,7 @@ fn lower_pat(&mut self, p: &Pat) -> P<hir::Pat> {
|
||||
|
||||
hir::PatKind::Binding(
|
||||
self.lower_binding_mode(binding_mode),
|
||||
self.lower_node_id(canonical_id).hir_id,
|
||||
self.lower_node_id(canonical_id),
|
||||
ident,
|
||||
sub.as_ref().map(|x| self.lower_pat(x)),
|
||||
)
|
||||
@@ -4000,12 +3938,10 @@ fn lower_pat(&mut self, p: &Pat) -> P<hir::Pat> {
|
||||
let fs = fields
|
||||
.iter()
|
||||
.map(|f| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
|
||||
Spanned {
|
||||
span: f.span,
|
||||
node: hir::FieldPat {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
ident: f.node.ident,
|
||||
pat: self.lower_pat(&f.node.pat),
|
||||
is_shorthand: f.node.is_shorthand,
|
||||
@@ -4036,9 +3972,8 @@ fn lower_pat(&mut self, p: &Pat) -> P<hir::Pat> {
|
||||
PatKind::Mac(_) => panic!("Shouldn't exist here"),
|
||||
};
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(p.id);
|
||||
P(hir::Pat {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(p.id),
|
||||
node,
|
||||
span: p.span,
|
||||
})
|
||||
@@ -4053,9 +3988,8 @@ fn lower_range_end(&mut self, e: &RangeEnd) -> hir::RangeEnd {
|
||||
|
||||
fn lower_anon_const(&mut self, c: &AnonConst) -> hir::AnonConst {
|
||||
self.with_new_scopes(|this| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = this.lower_node_id(c.id);
|
||||
hir::AnonConst {
|
||||
hir_id,
|
||||
hir_id: this.lower_node_id(c.id),
|
||||
body: this.lower_body(None, |this| this.lower_expr(&c.value)),
|
||||
}
|
||||
})
|
||||
@@ -4130,11 +4064,10 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
// Wrap the `if let` expr in a block.
|
||||
let span = els.span;
|
||||
let els = P(self.lower_expr(els));
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let blk = P(hir::Block {
|
||||
stmts: hir_vec![],
|
||||
expr: Some(els),
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
rules: hir::DefaultBlock,
|
||||
span,
|
||||
targeted_by_break: false,
|
||||
@@ -4176,13 +4109,12 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
let mut block = this.lower_block(body, true).into_inner();
|
||||
let tail = block.expr.take().map_or_else(
|
||||
|| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = this.next_id();
|
||||
let span = this.sess.source_map().end_point(unstable_span);
|
||||
hir::Expr {
|
||||
span,
|
||||
node: hir::ExprKind::Tup(hir_vec![]),
|
||||
attrs: ThinVec::new(),
|
||||
hir_id,
|
||||
hir_id: this.next_id(),
|
||||
}
|
||||
},
|
||||
|x: P<hir::Expr>| x.into_inner(),
|
||||
@@ -4363,10 +4295,8 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
let struct_path = self.std_path(e.span, &struct_path, None, is_unit);
|
||||
let struct_path = hir::QPath::Resolved(None, P(struct_path));
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(e.id);
|
||||
|
||||
return hir::Expr {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(e.id),
|
||||
node: if is_unit {
|
||||
hir::ExprKind::Path(struct_path)
|
||||
} else {
|
||||
@@ -4667,9 +4597,8 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
ThinVec::new(),
|
||||
))
|
||||
};
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let match_stmt = hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node: hir::StmtKind::Expr(match_expr),
|
||||
span: head_sp,
|
||||
};
|
||||
@@ -4695,9 +4624,8 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
|
||||
let body_block = self.with_loop_scope(e.id, |this| this.lower_block(body, false));
|
||||
let body_expr = P(self.expr_block(body_block, ThinVec::new()));
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let body_stmt = hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node: hir::StmtKind::Expr(body_expr),
|
||||
span: body.span,
|
||||
};
|
||||
@@ -4714,9 +4642,8 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
self.lower_label(opt_label),
|
||||
hir::LoopSource::ForLoop,
|
||||
);
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(e.id);
|
||||
let loop_expr = P(hir::Expr {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(e.id),
|
||||
node: loop_expr,
|
||||
span: e.span,
|
||||
attrs: ThinVec::new(),
|
||||
@@ -4834,7 +4761,7 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
let thin_attrs = ThinVec::from(attrs);
|
||||
let catch_scope = self.catch_scopes.last().map(|x| *x);
|
||||
let ret_expr = if let Some(catch_node) = catch_scope {
|
||||
let target_id = Ok(self.lower_node_id(catch_node).hir_id);
|
||||
let target_id = Ok(self.lower_node_id(catch_node));
|
||||
P(self.expr(
|
||||
try_span,
|
||||
hir::ExprKind::Break(
|
||||
@@ -4864,10 +4791,8 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
ExprKind::Mac(_) => panic!("Shouldn't exist here"),
|
||||
};
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(e.id);
|
||||
|
||||
hir::Expr {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(e.id),
|
||||
node: kind,
|
||||
span: e.span,
|
||||
attrs: e.attrs.clone(),
|
||||
@@ -4881,21 +4806,18 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
let mut ids: SmallVec<[hir::Stmt; 1]> = item_ids
|
||||
.into_iter()
|
||||
.map(|item_id| {
|
||||
let item_id = hir::ItemId { id: self.lower_node_id(item_id).hir_id };
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let item_id = hir::ItemId { id: self.lower_node_id(item_id) };
|
||||
|
||||
hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node: hir::StmtKind::Item(item_id),
|
||||
span: s.span,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
ids.push({
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(s.id);
|
||||
|
||||
hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(s.id),
|
||||
node: hir::StmtKind::Local(P(l)),
|
||||
span: s.span,
|
||||
}
|
||||
@@ -4908,7 +4830,7 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
return self.lower_item_id(it)
|
||||
.into_iter()
|
||||
.map(|item_id| {
|
||||
let LoweredNodeId { node_id: _, hir_id } = id.take()
|
||||
let hir_id = id.take()
|
||||
.map(|id| self.lower_node_id(id))
|
||||
.unwrap_or_else(|| self.next_id());
|
||||
|
||||
@@ -4921,19 +4843,15 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr {
|
||||
.collect();
|
||||
}
|
||||
StmtKind::Expr(ref e) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(s.id);
|
||||
|
||||
hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(s.id),
|
||||
node: hir::StmtKind::Expr(P(self.lower_expr(e))),
|
||||
span: s.span,
|
||||
}
|
||||
},
|
||||
StmtKind::Semi(ref e) => {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.lower_node_id(s.id);
|
||||
|
||||
hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.lower_node_id(s.id),
|
||||
node: hir::StmtKind::Semi(P(self.lower_expr(e))),
|
||||
span: s.span,
|
||||
}
|
||||
@@ -4978,7 +4896,7 @@ fn lower_visibility(
|
||||
ParamMode::Explicit,
|
||||
explicit_owner,
|
||||
)),
|
||||
hir_id: lowered_id.hir_id,
|
||||
hir_id: lowered_id,
|
||||
}
|
||||
},
|
||||
VisibilityKind::Inherited => hir::VisibilityKind::Inherited,
|
||||
@@ -5047,10 +4965,8 @@ fn arm(&mut self, pats: hir::HirVec<P<hir::Pat>>, expr: P<hir::Expr>) -> hir::Ar
|
||||
}
|
||||
|
||||
fn field(&mut self, ident: Ident, expr: P<hir::Expr>, span: Span) -> hir::Field {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
|
||||
hir::Field {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
ident,
|
||||
span,
|
||||
expr,
|
||||
@@ -5144,9 +5060,8 @@ fn expr_tuple(&mut self, sp: Span, exprs: hir::HirVec<hir::Expr>) -> P<hir::Expr
|
||||
}
|
||||
|
||||
fn expr(&mut self, span: Span, node: hir::ExprKind, attrs: ThinVec<Attribute>) -> hir::Expr {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
hir::Expr {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node,
|
||||
span,
|
||||
attrs,
|
||||
@@ -5160,21 +5075,18 @@ fn stmt_let_pat(
|
||||
pat: P<hir::Pat>,
|
||||
source: hir::LocalSource,
|
||||
) -> hir::Stmt {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
|
||||
let local = hir::Local {
|
||||
pat,
|
||||
ty: None,
|
||||
init: ex,
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
span: sp,
|
||||
attrs: ThinVec::new(),
|
||||
source,
|
||||
};
|
||||
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
hir::Stmt {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node: hir::StmtKind::Local(P(local)),
|
||||
span: sp
|
||||
}
|
||||
@@ -5190,12 +5102,10 @@ fn block_all(
|
||||
stmts: hir::HirVec<hir::Stmt>,
|
||||
expr: Option<P<hir::Expr>>,
|
||||
) -> hir::Block {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
|
||||
hir::Block {
|
||||
stmts,
|
||||
expr,
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
rules: hir::DefaultBlock,
|
||||
span,
|
||||
targeted_by_break: false,
|
||||
@@ -5244,7 +5154,7 @@ fn pat_ident_binding_mode(
|
||||
ident: Ident,
|
||||
bm: hir::BindingAnnotation,
|
||||
) -> (P<hir::Pat>, hir::HirId) {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let hir_id = self.next_id();
|
||||
|
||||
(
|
||||
P(hir::Pat {
|
||||
@@ -5261,9 +5171,8 @@ fn pat_wild(&mut self, span: Span) -> P<hir::Pat> {
|
||||
}
|
||||
|
||||
fn pat(&mut self, span: Span, pat: hir::PatKind) -> P<hir::Pat> {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
P(hir::Pat {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
node: pat,
|
||||
span,
|
||||
})
|
||||
@@ -5286,14 +5195,13 @@ fn std_path(
|
||||
|
||||
for seg in path.segments.iter_mut() {
|
||||
if seg.hir_id.is_some() {
|
||||
seg.hir_id = Some(self.next_id().hir_id);
|
||||
seg.hir_id = Some(self.next_id());
|
||||
}
|
||||
}
|
||||
path
|
||||
}
|
||||
|
||||
fn ty_path(&mut self, id: LoweredNodeId, span: Span, qpath: hir::QPath) -> hir::Ty {
|
||||
let mut id = id;
|
||||
fn ty_path(&mut self, mut hir_id: hir::HirId, span: Span, qpath: hir::QPath) -> hir::Ty {
|
||||
let node = match qpath {
|
||||
hir::QPath::Resolved(None, path) => {
|
||||
// Turn trait object paths into `TyKind::TraitObject` instead.
|
||||
@@ -5303,14 +5211,14 @@ fn ty_path(&mut self, id: LoweredNodeId, span: Span, qpath: hir::QPath) -> hir::
|
||||
bound_generic_params: hir::HirVec::new(),
|
||||
trait_ref: hir::TraitRef {
|
||||
path: path.and_then(|path| path),
|
||||
hir_ref_id: id.hir_id,
|
||||
hir_ref_id: hir_id,
|
||||
},
|
||||
span,
|
||||
};
|
||||
|
||||
// The original ID is taken by the `PolyTraitRef`,
|
||||
// so the `Ty` itself needs a different one.
|
||||
id = self.next_id();
|
||||
hir_id = self.next_id();
|
||||
hir::TyKind::TraitObject(hir_vec![principal], self.elided_dyn_bound(span))
|
||||
}
|
||||
_ => hir::TyKind::Path(hir::QPath::Resolved(None, path)),
|
||||
@@ -5319,7 +5227,7 @@ fn ty_path(&mut self, id: LoweredNodeId, span: Span, qpath: hir::QPath) -> hir::
|
||||
_ => hir::TyKind::Path(qpath),
|
||||
};
|
||||
hir::Ty {
|
||||
hir_id: id.hir_id,
|
||||
hir_id,
|
||||
node,
|
||||
span,
|
||||
}
|
||||
@@ -5335,9 +5243,8 @@ fn elided_ref_lifetime(&mut self, span: Span) -> hir::Lifetime {
|
||||
// `'f`.
|
||||
AnonymousLifetimeMode::CreateParameter => {
|
||||
let fresh_name = self.collect_fresh_in_band_lifetime(span);
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
hir::Lifetime {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
span,
|
||||
name: hir::LifetimeName::Param(fresh_name),
|
||||
}
|
||||
@@ -5360,7 +5267,7 @@ fn new_error_lifetime(&mut self, id: Option<NodeId>, span: Span) -> hir::Lifetim
|
||||
Some(id) => (id, "`'_` cannot be used here", "`'_` is a reserved lifetime name"),
|
||||
|
||||
None => (
|
||||
self.next_id().node_id,
|
||||
self.sess.next_node_id(),
|
||||
"`&` without an explicit lifetime name cannot be used here",
|
||||
"explicit lifetime name needed here",
|
||||
),
|
||||
@@ -5451,15 +5358,13 @@ fn new_replacement_lifetime(
|
||||
replacement: LtReplacement,
|
||||
span: Span,
|
||||
) -> hir::Lifetime {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
let hir_id = self.next_id();
|
||||
self.replace_elided_lifetime(hir_id, span, replacement)
|
||||
}
|
||||
|
||||
fn new_implicit_lifetime(&mut self, span: Span) -> hir::Lifetime {
|
||||
let LoweredNodeId { node_id: _, hir_id } = self.next_id();
|
||||
|
||||
hir::Lifetime {
|
||||
hir_id,
|
||||
hir_id: self.next_id(),
|
||||
span,
|
||||
name: hir::LifetimeName::Implicit,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user