@@ -273,11 +273,11 @@ impl<'a, 'b> Context<'a, 'b> {
273273 } else {
274274 MultiSpan :: from_span ( self . fmtsp )
275275 } ;
276- let mut refs: Vec < _ > = self
276+ let refs_len = self . invalid_refs . len ( ) ;
277+ let mut refs = self
277278 . invalid_refs
278279 . iter ( )
279- . map ( |( r, pos) | ( r. to_string ( ) , self . arg_spans . get ( * pos) ) )
280- . collect ( ) ;
280+ . map ( |( r, pos) | ( r. to_string ( ) , self . arg_spans . get ( * pos) ) ) ;
281281
282282 if self . names . is_empty ( ) && !numbered_position_args {
283283 e = self . ecx . mut_span_err (
@@ -290,28 +290,24 @@ impl<'a, 'b> Context<'a, 'b> {
290290 ) ,
291291 ) ;
292292 } else {
293- let ( arg_list, mut sp) = match refs. len ( ) {
294- 1 => {
295- let ( reg, pos) = refs. pop ( ) . unwrap ( ) ;
296- (
297- format ! ( "argument {}" , reg) ,
298- MultiSpan :: from_span ( * pos. unwrap_or ( & self . fmtsp ) ) ,
299- )
300- }
301- _ => {
302- let pos =
303- MultiSpan :: from_spans ( refs. iter ( ) . map ( |( _, p) | * p. unwrap ( ) ) . collect ( ) ) ;
304- let mut refs: Vec < String > = refs. iter ( ) . map ( |( s, _) | s. to_owned ( ) ) . collect ( ) ;
305- let reg = refs. pop ( ) . unwrap ( ) ;
306- (
307- format ! (
308- "arguments {head} and {tail}" ,
309- tail = reg,
310- head = refs. join( ", " )
311- ) ,
312- pos,
313- )
314- }
293+ let ( arg_list, mut sp) = if refs_len == 1 {
294+ let ( reg, pos) = refs. next ( ) . unwrap ( ) ;
295+ (
296+ format ! ( "argument {}" , reg) ,
297+ MultiSpan :: from_span ( * pos. unwrap_or ( & self . fmtsp ) ) ,
298+ )
299+ } else {
300+ let ( mut refs, spans) : ( Vec < _ > , Vec < _ > ) = refs. unzip ( ) ;
301+ let pos = MultiSpan :: from_spans ( spans. into_iter ( ) . map ( |s| * s. unwrap ( ) ) . collect ( ) ) ;
302+ let reg = refs. pop ( ) . unwrap ( ) ;
303+ (
304+ format ! (
305+ "arguments {head} and {tail}" ,
306+ head = refs. join( ", " ) ,
307+ tail = reg,
308+ ) ,
309+ pos,
310+ )
315311 } ;
316312 if !self . is_literal {
317313 sp = MultiSpan :: from_span ( self . fmtsp ) ;
0 commit comments