@@ -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