@@ -2432,6 +2432,21 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2432
2432
let mut expected_arg_tys = expected_arg_tys;
2433
2433
let expected_arg_count = fn_inputs. len ( ) ;
2434
2434
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
+
2435
2450
fn parameter_count_error < ' tcx > ( sess : & Session , sp : Span , fn_inputs : & [ Ty < ' tcx > ] ,
2436
2451
expected_count : usize , arg_count : usize , error_code : & str ,
2437
2452
variadic : bool ) {
@@ -2464,7 +2479,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2464
2479
let tuple_type = self . structurally_resolved_type ( sp, fn_inputs[ 0 ] ) ;
2465
2480
match tuple_type. sty {
2466
2481
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 ( ) ,
2468
2483
"E0057" , false ) ;
2469
2484
expected_arg_tys = & [ ] ;
2470
2485
self . err_args ( args. len ( ) )
@@ -2493,14 +2508,14 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
2493
2508
if supplied_arg_count >= expected_arg_count {
2494
2509
fn_inputs. to_vec ( )
2495
2510
} 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,
2497
2512
supplied_arg_count, "E0060" , true ) ;
2498
2513
expected_arg_tys = & [ ] ;
2499
2514
self . err_args ( supplied_arg_count)
2500
2515
}
2501
2516
} 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 ) ;
2504
2519
expected_arg_tys = & [ ] ;
2505
2520
self . err_args ( supplied_arg_count)
2506
2521
} ;
0 commit comments