Classify closure arguments in refutable pattern in argument error
This commit is contained in:
parent
1fc46f3a8f
commit
e17f91dd8b
3 changed files with 12 additions and 3 deletions
|
@ -47,9 +47,18 @@ pub(crate) fn check_match(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Result<(), Err
|
||||||
};
|
};
|
||||||
visitor.visit_expr(&thir[expr]);
|
visitor.visit_expr(&thir[expr]);
|
||||||
|
|
||||||
|
let origin = match tcx.def_kind(def_id) {
|
||||||
|
DefKind::AssocFn | DefKind::Fn => "function argument",
|
||||||
|
DefKind::Closure => "closure argument",
|
||||||
|
// other types of MIR don't have function parameters, and we don't need to
|
||||||
|
// categorize those for the irrefutable check.
|
||||||
|
_ if thir.params.is_empty() => "",
|
||||||
|
kind => bug!("unexpected function parameters in THIR: {kind:?} {def_id:?}"),
|
||||||
|
};
|
||||||
|
|
||||||
for param in thir.params.iter() {
|
for param in thir.params.iter() {
|
||||||
if let Some(box ref pattern) = param.pat {
|
if let Some(box ref pattern) = param.pat {
|
||||||
visitor.check_binding_is_irrefutable(pattern, "function argument", None, None);
|
visitor.check_binding_is_irrefutable(pattern, origin, None, None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
visitor.error
|
visitor.error
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
let f = |3: isize| println!("hello");
|
let f = |3: isize| println!("hello");
|
||||||
//~^ ERROR refutable pattern in function argument
|
//~^ ERROR refutable pattern in closure argument
|
||||||
//~| `..=2_isize` and `4_isize..` not covered
|
//~| `..=2_isize` and `4_isize..` not covered
|
||||||
f(4);
|
f(4);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0005]: refutable pattern in function argument
|
error[E0005]: refutable pattern in closure argument
|
||||||
--> $DIR/refutable-pattern-in-fn-arg.rs:2:14
|
--> $DIR/refutable-pattern-in-fn-arg.rs:2:14
|
||||||
|
|
|
|
||||||
LL | let f = |3: isize| println!("hello");
|
LL | let f = |3: isize| println!("hello");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue