@@ -2532,16 +2532,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2532
2532
let mut expected_arg_tys = expected_arg_tys;
2533
2533
let expected_arg_count = fn_inputs. len ( ) ;
2534
2534
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,
2545
2541
& format ! ( "this function takes {}{} parameter{} but {} parameter{} supplied" ,
2546
2542
if variadic { "at least " } else { "" } ,
2547
2543
expected_count,
@@ -2550,11 +2546,11 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2550
2546
if arg_count == 1 { " was" } else { "s were" } ) ,
2551
2547
DiagnosticId :: Error ( error_code. to_owned ( ) ) ) ;
2552
2548
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) ) {
2554
2550
err. span_label ( def_s, "defined here" ) ;
2555
2551
}
2556
2552
if sugg_unit {
2557
- let sugg_span = sess. codemap ( ) . end_point ( expr_sp) ;
2553
+ let sugg_span = tcx . sess . codemap ( ) . end_point ( expr_sp) ;
2558
2554
// remove closing `)` from the span
2559
2555
let sugg_span = sugg_span. shrink_to_lo ( ) ;
2560
2556
err. span_suggestion (
@@ -2568,14 +2564,13 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2568
2564
if expected_count == 1 { "" } else { "s" } ) ) ;
2569
2565
}
2570
2566
err. emit ( ) ;
2571
- }
2567
+ } ;
2572
2568
2573
2569
let formal_tys = if tuple_arguments == TupleArguments {
2574
2570
let tuple_type = self . structurally_resolved_type ( sp, fn_inputs[ 0 ] ) ;
2575
2571
match tuple_type. sty {
2576
2572
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 ) ;
2579
2574
expected_arg_tys = & [ ] ;
2580
2575
self . err_args ( args. len ( ) )
2581
2576
}
@@ -2603,8 +2598,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2603
2598
if supplied_arg_count >= expected_arg_count {
2604
2599
fn_inputs. to_vec ( )
2605
2600
} 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 ) ;
2608
2602
expected_arg_tys = & [ ] ;
2609
2603
self . err_args ( supplied_arg_count)
2610
2604
}
@@ -2617,8 +2611,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2617
2611
} else {
2618
2612
false
2619
2613
} ;
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
+
2622
2616
expected_arg_tys = & [ ] ;
2623
2617
self . err_args ( supplied_arg_count)
2624
2618
} ;
0 commit comments