Skip to content

Commit 21641d6

Browse files
committed
Refactor inner function into closure.
So we can cut some params by using stuff from the environment.
1 parent b12af86 commit 21641d6

File tree

1 file changed

+13
-19
lines changed
  • src/librustc_typeck/check

1 file changed

+13
-19
lines changed

src/librustc_typeck/check/mod.rs

+13-19
Original file line numberDiff line numberDiff line change
@@ -2531,16 +2531,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
25312531
let mut expected_arg_tys = expected_arg_tys;
25322532
let expected_arg_count = fn_inputs.len();
25332533

2534-
fn parameter_count_error<'tcx>(sess: &Session,
2535-
sp: Span,
2536-
expr_sp: Span,
2537-
expected_count: usize,
2538-
arg_count: usize,
2539-
error_code: &str,
2540-
variadic: bool,
2541-
def_span: Option<Span>,
2542-
sugg_unit: bool) {
2543-
let mut err = sess.struct_span_err_with_code(sp,
2534+
let param_count_error = |expected_count: usize,
2535+
arg_count: usize,
2536+
error_code: &str,
2537+
variadic: bool,
2538+
sugg_unit: bool| {
2539+
let mut err = tcx.sess.struct_span_err_with_code(sp,
25442540
&format!("this function takes {}{} parameter{} but {} parameter{} supplied",
25452541
if variadic {"at least "} else {""},
25462542
expected_count,
@@ -2549,11 +2545,11 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
25492545
if arg_count == 1 {" was"} else {"s were"}),
25502546
DiagnosticId::Error(error_code.to_owned()));
25512547

2552-
if let Some(def_s) = def_span.map(|sp| sess.codemap().def_span(sp)) {
2548+
if let Some(def_s) = def_span.map(|sp| tcx.sess.codemap().def_span(sp)) {
25532549
err.span_label(def_s, "defined here");
25542550
}
25552551
if sugg_unit {
2556-
let sugg_span = sess.codemap().end_point(expr_sp);
2552+
let sugg_span = tcx.sess.codemap().end_point(expr_sp);
25572553
// remove closing `)` from the span
25582554
let sugg_span = sugg_span.shrink_to_lo();
25592555
err.span_suggestion(
@@ -2567,14 +2563,13 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
25672563
if expected_count == 1 {""} else {"s"}));
25682564
}
25692565
err.emit();
2570-
}
2566+
};
25712567

25722568
let formal_tys = if tuple_arguments == TupleArguments {
25732569
let tuple_type = self.structurally_resolved_type(sp, fn_inputs[0]);
25742570
match tuple_type.sty {
25752571
ty::TyTuple(arg_types) if arg_types.len() != args.len() => {
2576-
parameter_count_error(tcx.sess, sp, expr_sp, arg_types.len(), args.len(),
2577-
"E0057", false, def_span, false);
2572+
param_count_error(arg_types.len(), args.len(), "E0057", false, false);
25782573
expected_arg_tys = &[];
25792574
self.err_args(args.len())
25802575
}
@@ -2602,8 +2597,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
26022597
if supplied_arg_count >= expected_arg_count {
26032598
fn_inputs.to_vec()
26042599
} else {
2605-
parameter_count_error(tcx.sess, sp, expr_sp, expected_arg_count,
2606-
supplied_arg_count, "E0060", true, def_span, false);
2600+
param_count_error(expected_arg_count, supplied_arg_count, "E0060", true, false);
26072601
expected_arg_tys = &[];
26082602
self.err_args(supplied_arg_count)
26092603
}
@@ -2616,8 +2610,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
26162610
} else {
26172611
false
26182612
};
2619-
parameter_count_error(tcx.sess, sp, expr_sp, expected_arg_count,
2620-
supplied_arg_count, "E0061", false, def_span, sugg_unit);
2613+
param_count_error(expected_arg_count, supplied_arg_count, "E0061", false, sugg_unit);
2614+
26212615
expected_arg_tys = &[];
26222616
self.err_args(supplied_arg_count)
26232617
};

0 commit comments

Comments
 (0)