Eliminate PatKind::Path
This commit is contained in:
parent
ccc9ba5c30
commit
f47ad71059
39 changed files with 273 additions and 174 deletions
|
@ -1391,7 +1391,11 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
None,
|
||||
);
|
||||
// Destructure like a unit struct.
|
||||
let unit_struct_pat = hir::PatKind::Path(qpath);
|
||||
let unit_struct_pat = hir::PatKind::Expr(self.arena.alloc(hir::PatExpr {
|
||||
kind: hir::PatExprKind::Path(qpath),
|
||||
hir_id: self.next_id(),
|
||||
span: self.lower_span(lhs.span),
|
||||
}));
|
||||
return self.pat_without_dbm(lhs.span, unit_struct_pat);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,7 +69,16 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
ImplTraitContext::Disallowed(ImplTraitPosition::Path),
|
||||
None,
|
||||
);
|
||||
break hir::PatKind::Path(qpath);
|
||||
let kind = hir::PatExprKind::Path(qpath);
|
||||
let span = self.lower_span(pattern.span);
|
||||
let expr = hir::PatExpr { hir_id: pat_hir_id, span, kind };
|
||||
let expr = self.arena.alloc(expr);
|
||||
return hir::Pat {
|
||||
hir_id: self.next_id(),
|
||||
kind: hir::PatKind::Expr(expr),
|
||||
span,
|
||||
default_binding_modes: true,
|
||||
};
|
||||
}
|
||||
PatKind::Struct(qself, path, fields, etc) => {
|
||||
let qpath = self.lower_qpath(
|
||||
|
@ -304,16 +313,20 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
)
|
||||
}
|
||||
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)],
|
||||
}),
|
||||
))
|
||||
let span = self.lower_span(ident.span);
|
||||
hir::PatKind::Expr(self.arena.alloc(hir::PatExpr {
|
||||
kind: hir::PatExprKind::Path(hir::QPath::Resolved(
|
||||
None,
|
||||
self.arena.alloc(hir::Path {
|
||||
span,
|
||||
res,
|
||||
segments: arena_vec![self; hir::PathSegment::new(self.lower_ident(ident), self.next_id(), res)],
|
||||
}),
|
||||
)),
|
||||
hir_id: self.next_id(),
|
||||
span,
|
||||
}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue