Skip to content

Commit 8866f68

Browse files
committed
format: refactor report_invalid_references
1 parent 3d052c9 commit 8866f68

File tree

1 file changed

+21
-25
lines changed

1 file changed

+21
-25
lines changed

src/libsyntax_ext/format.rs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)