Skip to content

Commit aa6b750

Browse files
authored
Rollup merge of rust-lang#101057 - cjgillot:one-fn-sig, r=compiler-errors
Merge implementations of HIR fn_decl and fn_sig.
2 parents 0cad274 + 20012ea commit aa6b750

File tree

4 files changed

+9
-31
lines changed

4 files changed

+9
-31
lines changed

compiler/rustc_hir/src/hir.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -3216,7 +3216,7 @@ impl<'hir> OwnerNode<'hir> {
32163216
}
32173217
}
32183218

3219-
pub fn fn_decl(&self) -> Option<&FnDecl<'hir>> {
3219+
pub fn fn_decl(self) -> Option<&'hir FnDecl<'hir>> {
32203220
match self {
32213221
OwnerNode::TraitItem(TraitItem { kind: TraitItemKind::Fn(fn_sig, _), .. })
32223222
| OwnerNode::ImplItem(ImplItem { kind: ImplItemKind::Fn(fn_sig, _), .. })
@@ -3400,19 +3400,20 @@ impl<'hir> Node<'hir> {
34003400
}
34013401
}
34023402

3403-
pub fn fn_decl(&self) -> Option<&'hir FnDecl<'hir>> {
3403+
pub fn fn_decl(self) -> Option<&'hir FnDecl<'hir>> {
34043404
match self {
34053405
Node::TraitItem(TraitItem { kind: TraitItemKind::Fn(fn_sig, _), .. })
34063406
| Node::ImplItem(ImplItem { kind: ImplItemKind::Fn(fn_sig, _), .. })
34073407
| Node::Item(Item { kind: ItemKind::Fn(fn_sig, _, _), .. }) => Some(fn_sig.decl),
3408-
Node::ForeignItem(ForeignItem { kind: ForeignItemKind::Fn(fn_decl, _, _), .. }) => {
3408+
Node::Expr(Expr { kind: ExprKind::Closure(Closure { fn_decl, .. }), .. })
3409+
| Node::ForeignItem(ForeignItem { kind: ForeignItemKind::Fn(fn_decl, _, _), .. }) => {
34093410
Some(fn_decl)
34103411
}
34113412
_ => None,
34123413
}
34133414
}
34143415

3415-
pub fn fn_sig(&self) -> Option<&'hir FnSig<'hir>> {
3416+
pub fn fn_sig(self) -> Option<&'hir FnSig<'hir>> {
34163417
match self {
34173418
Node::TraitItem(TraitItem { kind: TraitItemKind::Fn(fn_sig, _), .. })
34183419
| Node::ImplItem(ImplItem { kind: ImplItemKind::Fn(fn_sig, _), .. })

compiler/rustc_middle/src/hir/map/mod.rs

+2-24
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,6 @@ use rustc_span::symbol::{kw, sym, Ident, Symbol};
1717
use rustc_span::Span;
1818
use rustc_target::spec::abi::Abi;
1919

20-
fn fn_decl<'hir>(node: Node<'hir>) -> Option<&'hir FnDecl<'hir>> {
21-
match node {
22-
Node::Item(Item { kind: ItemKind::Fn(sig, _, _), .. })
23-
| Node::TraitItem(TraitItem { kind: TraitItemKind::Fn(sig, _), .. })
24-
| Node::ImplItem(ImplItem { kind: ImplItemKind::Fn(sig, _), .. }) => Some(&sig.decl),
25-
Node::Expr(Expr { kind: ExprKind::Closure(Closure { fn_decl, .. }), .. })
26-
| Node::ForeignItem(ForeignItem { kind: ForeignItemKind::Fn(fn_decl, ..), .. }) => {
27-
Some(fn_decl)
28-
}
29-
_ => None,
30-
}
31-
}
32-
33-
pub fn fn_sig<'hir>(node: Node<'hir>) -> Option<&'hir FnSig<'hir>> {
34-
match &node {
35-
Node::Item(Item { kind: ItemKind::Fn(sig, _, _), .. })
36-
| Node::TraitItem(TraitItem { kind: TraitItemKind::Fn(sig, _), .. })
37-
| Node::ImplItem(ImplItem { kind: ImplItemKind::Fn(sig, _), .. }) => Some(sig),
38-
_ => None,
39-
}
40-
}
41-
4220
#[inline]
4321
pub fn associated_body<'hir>(node: Node<'hir>) -> Option<BodyId> {
4422
match node {
@@ -389,15 +367,15 @@ impl<'hir> Map<'hir> {
389367

390368
pub fn fn_decl_by_hir_id(self, hir_id: HirId) -> Option<&'hir FnDecl<'hir>> {
391369
if let Some(node) = self.find(hir_id) {
392-
fn_decl(node)
370+
node.fn_decl()
393371
} else {
394372
bug!("no node for hir_id `{}`", hir_id)
395373
}
396374
}
397375

398376
pub fn fn_sig_by_hir_id(self, hir_id: HirId) -> Option<&'hir FnSig<'hir>> {
399377
if let Some(node) = self.find(hir_id) {
400-
fn_sig(node)
378+
node.fn_sig()
401379
} else {
402380
bug!("no node for hir_id `{}`", hir_id)
403381
}

compiler/rustc_mir_transform/src/coverage/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ fn fn_sig_and_body<'tcx>(
541541
// to HIR for it.
542542
let hir_node = tcx.hir().get_if_local(def_id).expect("expected DefId is local");
543543
let fn_body_id = hir::map::associated_body(hir_node).expect("HIR node is a function with body");
544-
(hir::map::fn_sig(hir_node), tcx.hir().body(fn_body_id))
544+
(hir_node.fn_sig(), tcx.hir().body(fn_body_id))
545545
}
546546

547547
fn get_body_span<'tcx>(

compiler/rustc_typeck/src/structured_errors/wrong_number_of_generic_args.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use rustc_errors::{
44
MultiSpan,
55
};
66
use rustc_hir as hir;
7-
use rustc_middle::hir::map::fn_sig;
87
use rustc_middle::ty::{self as ty, AssocItems, AssocKind, TyCtxt};
98
use rustc_session::Session;
109
use rustc_span::def_id::DefId;
@@ -368,7 +367,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
368367
&self,
369368
num_params_to_take: usize,
370369
) -> String {
371-
let fn_sig = self.tcx.hir().get_if_local(self.def_id).and_then(fn_sig);
370+
let fn_sig = self.tcx.hir().get_if_local(self.def_id).and_then(hir::Node::fn_sig);
372371
let is_used_in_input = |def_id| {
373372
fn_sig.map_or(false, |fn_sig| {
374373
fn_sig.decl.inputs.iter().any(|ty| match ty.kind {

0 commit comments

Comments
 (0)