Auto merge of #101228 - nnethercote:simplify-hir-PathSegment, r=petrochenkov
Simplify `hir::PathSegment` r? `@petrochenkov`
This commit is contained in:
commit
2dc703fd6e
28 changed files with 172 additions and 194 deletions
|
@ -1776,12 +1776,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
binding: hir::HirId,
|
||||
attrs: AttrVec,
|
||||
) -> hir::Expr<'hir> {
|
||||
let hir_id = self.next_id();
|
||||
let res = Res::Local(binding);
|
||||
let expr_path = hir::ExprKind::Path(hir::QPath::Resolved(
|
||||
None,
|
||||
self.arena.alloc(hir::Path {
|
||||
span: self.lower_span(span),
|
||||
res: Res::Local(binding),
|
||||
segments: arena_vec![self; hir::PathSegment::from_ident(ident)],
|
||||
res,
|
||||
segments: arena_vec![self; hir::PathSegment::new(ident, hir_id, res)],
|
||||
}),
|
||||
));
|
||||
|
||||
|
|
|
@ -246,9 +246,7 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
|
|||
}
|
||||
|
||||
fn visit_path_segment(&mut self, path_span: Span, path_segment: &'hir PathSegment<'hir>) {
|
||||
if let Some(hir_id) = path_segment.hir_id {
|
||||
self.insert(path_span, hir_id, Node::PathSegment(path_segment));
|
||||
}
|
||||
self.insert(path_span, path_segment.hir_id, Node::PathSegment(path_segment));
|
||||
intravisit::walk_path_segment(self, path_span, path_segment);
|
||||
}
|
||||
|
||||
|
|
|
@ -1439,10 +1439,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
GenericParamKind::Const { .. } => None,
|
||||
GenericParamKind::Type { .. } => {
|
||||
let def_id = self.local_def_id(id).to_def_id();
|
||||
let hir_id = self.next_id();
|
||||
let res = Res::Def(DefKind::TyParam, def_id);
|
||||
let ty_path = self.arena.alloc(hir::Path {
|
||||
span: param_span,
|
||||
res: Res::Def(DefKind::TyParam, def_id),
|
||||
segments: self.arena.alloc_from_iter([hir::PathSegment::from_ident(ident)]),
|
||||
res,
|
||||
segments: self
|
||||
.arena
|
||||
.alloc_from_iter([hir::PathSegment::new(ident, hir_id, res)]),
|
||||
});
|
||||
let ty_id = self.next_id();
|
||||
let bounded_ty =
|
||||
|
|
|
@ -1260,14 +1260,17 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
return self.lower_path_ty(t, qself, path, ParamMode::Explicit, itctx);
|
||||
}
|
||||
TyKind::ImplicitSelf => {
|
||||
let hir_id = self.lower_node_id(t.id);
|
||||
let res = self.expect_full_res(t.id);
|
||||
let res = self.lower_res(res);
|
||||
hir::TyKind::Path(hir::QPath::Resolved(
|
||||
None,
|
||||
self.arena.alloc(hir::Path {
|
||||
res,
|
||||
segments: arena_vec![self; hir::PathSegment::from_ident(
|
||||
Ident::with_dummy_span(kw::SelfUpper)
|
||||
segments: arena_vec![self; hir::PathSegment::new(
|
||||
Ident::with_dummy_span(kw::SelfUpper),
|
||||
hir_id,
|
||||
res
|
||||
)],
|
||||
span: self.lower_span(t.span),
|
||||
}),
|
||||
|
@ -2193,12 +2196,15 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
hir::PredicateOrigin::ImplTrait,
|
||||
);
|
||||
|
||||
let hir_id = self.next_id();
|
||||
let res = Res::Def(DefKind::TyParam, def_id.to_def_id());
|
||||
let ty = hir::TyKind::Path(hir::QPath::Resolved(
|
||||
None,
|
||||
self.arena.alloc(hir::Path {
|
||||
span: self.lower_span(span),
|
||||
res: Res::Def(DefKind::TyParam, def_id.to_def_id()),
|
||||
segments: arena_vec![self; hir::PathSegment::from_ident(self.lower_ident(ident))],
|
||||
res,
|
||||
segments:
|
||||
arena_vec![self; hir::PathSegment::new(self.lower_ident(ident), hir_id, res)],
|
||||
}),
|
||||
));
|
||||
|
||||
|
|
|
@ -254,14 +254,18 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
lower_sub(self),
|
||||
)
|
||||
}
|
||||
Some(res) => hir::PatKind::Path(hir::QPath::Resolved(
|
||||
None,
|
||||
self.arena.alloc(hir::Path {
|
||||
span: self.lower_span(ident.span),
|
||||
res: self.lower_res(res),
|
||||
segments: arena_vec![self; hir::PathSegment::from_ident(self.lower_ident(ident))],
|
||||
}),
|
||||
)),
|
||||
Some(res) => {
|
||||
let hir_id = self.next_id();
|
||||
let res = self.lower_res(res);
|
||||
hir::PatKind::Path(hir::QPath::Resolved(
|
||||
None,
|
||||
self.arena.alloc(hir::Path {
|
||||
span: self.lower_span(ident.span),
|
||||
res,
|
||||
segments: arena_vec![self; hir::PathSegment::new(self.lower_ident(ident), hir_id, res)],
|
||||
}),
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -250,16 +250,16 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
}
|
||||
|
||||
let res = self.expect_full_res(segment.id);
|
||||
let id = self.lower_node_id(segment.id);
|
||||
let hir_id = self.lower_node_id(segment.id);
|
||||
debug!(
|
||||
"lower_path_segment: ident={:?} original-id={:?} new-id={:?}",
|
||||
segment.ident, segment.id, id,
|
||||
segment.ident, segment.id, hir_id,
|
||||
);
|
||||
|
||||
hir::PathSegment {
|
||||
ident: self.lower_ident(segment.ident),
|
||||
hir_id: Some(id),
|
||||
res: Some(self.lower_res(res)),
|
||||
hir_id,
|
||||
res: self.lower_res(res),
|
||||
infer_args,
|
||||
args: if generic_args.is_empty() && generic_args.span.is_empty() {
|
||||
None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue