Skip to content

Commit fb5b5f5

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

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

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2532,16 +2532,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
25322532
let mut expected_arg_tys = expected_arg_tys;
25332533
let expected_arg_count = fn_inputs.len();
25342534

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

2553-
if let Some(def_s) = def_span.map(|sp| sess.codemap().def_span(sp)) {
2549+
if let Some(def_s) = def_span.map(|sp| tcx.sess.codemap().def_span(sp)) {
25542550
err.span_label(def_s, "defined here");
25552551
}
25562552
if sugg_unit {
2557-
let sugg_span = sess.codemap().end_point(expr_sp);
2553+
let sugg_span = tcx.sess.codemap().end_point(expr_sp);
25582554
// remove closing `)` from the span
25592555
let sugg_span = sugg_span.shrink_to_lo();
25602556
err.span_suggestion(
@@ -2568,14 +2564,13 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
25682564
if expected_count == 1 {""} else {"s"}));
25692565
}
25702566
err.emit();
2571-
}
2567+
};
25722568

25732569
let formal_tys = if tuple_arguments == TupleArguments {
25742570
let tuple_type = self.structurally_resolved_type(sp, fn_inputs[0]);
25752571
match tuple_type.sty {
25762572
ty::TyTuple(arg_types) if arg_types.len() != args.len() => {
2577-
parameter_count_error(tcx.sess, sp, expr_sp, arg_types.len(), args.len(),
2578-
"E0057", false, def_span, false);
2573+
param_count_error(arg_types.len(), args.len(), "E0057", false, false);
25792574
expected_arg_tys = &[];
25802575
self.err_args(args.len())
25812576
}
@@ -2603,8 +2598,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
26032598
if supplied_arg_count >= expected_arg_count {
26042599
fn_inputs.to_vec()
26052600
} else {
2606-
parameter_count_error(tcx.sess, sp, expr_sp, expected_arg_count,
2607-
supplied_arg_count, "E0060", true, def_span, false);
2601+
param_count_error(expected_arg_count, supplied_arg_count, "E0060", true, false);
26082602
expected_arg_tys = &[];
26092603
self.err_args(supplied_arg_count)
26102604
}
@@ -2617,8 +2611,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
26172611
} else {
26182612
false
26192613
};
2620-
parameter_count_error(tcx.sess, sp, expr_sp, expected_arg_count,
2621-
supplied_arg_count, "E0061", false, def_span, sugg_unit);
2614+
param_count_error(expected_arg_count, supplied_arg_count, "E0061", false, sugg_unit);
2615+
26222616
expected_arg_tys = &[];
26232617
self.err_args(supplied_arg_count)
26242618
};

0 commit comments

Comments
 (0)