@@ -2432,6 +2432,21 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
24322432 let mut expected_arg_tys = expected_arg_tys;
24332433 let expected_arg_count = fn_inputs. len ( ) ;
24342434
2435+ let sp_args = if args. len ( ) > 0 {
2436+ let ( first, args) = args. split_at ( 1 ) ;
2437+ let mut sp_tmp = first[ 0 ] . span ;
2438+ for arg in args {
2439+ let sp_opt = self . sess ( ) . codemap ( ) . merge_spans ( sp_tmp, arg. span ) ;
2440+ if ! sp_opt. is_some ( ) {
2441+ break ;
2442+ }
2443+ sp_tmp = sp_opt. unwrap ( ) ;
2444+ } ;
2445+ sp_tmp
2446+ } else {
2447+ sp
2448+ } ;
2449+
24352450 fn parameter_count_error < ' tcx > ( sess : & Session , sp : Span , fn_inputs : & [ Ty < ' tcx > ] ,
24362451 expected_count : usize , arg_count : usize , error_code : & str ,
24372452 variadic : bool ) {
@@ -2464,7 +2479,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
24642479 let tuple_type = self . structurally_resolved_type ( sp, fn_inputs[ 0 ] ) ;
24652480 match tuple_type. sty {
24662481 ty:: TyTuple ( arg_types) if arg_types. len ( ) != args. len ( ) => {
2467- parameter_count_error ( tcx. sess , sp , fn_inputs, arg_types. len ( ) , args. len ( ) ,
2482+ parameter_count_error ( tcx. sess , sp_args , fn_inputs, arg_types. len ( ) , args. len ( ) ,
24682483 "E0057" , false ) ;
24692484 expected_arg_tys = & [ ] ;
24702485 self . err_args ( args. len ( ) )
@@ -2493,14 +2508,14 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
24932508 if supplied_arg_count >= expected_arg_count {
24942509 fn_inputs. to_vec ( )
24952510 } else {
2496- parameter_count_error ( tcx. sess , sp , fn_inputs, expected_arg_count,
2511+ parameter_count_error ( tcx. sess , sp_args , fn_inputs, expected_arg_count,
24972512 supplied_arg_count, "E0060" , true ) ;
24982513 expected_arg_tys = & [ ] ;
24992514 self . err_args ( supplied_arg_count)
25002515 }
25012516 } else {
2502- parameter_count_error ( tcx. sess , sp , fn_inputs, expected_arg_count, supplied_arg_count ,
2503- "E0061" , false ) ;
2517+ parameter_count_error ( tcx. sess , sp_args , fn_inputs, expected_arg_count,
2518+ supplied_arg_count , "E0061" , false ) ;
25042519 expected_arg_tys = & [ ] ;
25052520 self . err_args ( supplied_arg_count)
25062521 } ;
0 commit comments