1
Fork 0

format: refactor report_invalid_references

This commit is contained in:
ljedrz 2018-12-14 11:28:09 +01:00
parent 3d052c920b
commit 8866f68a4d

View file

@ -273,11 +273,11 @@ impl<'a, 'b> Context<'a, 'b> {
} else { } else {
MultiSpan::from_span(self.fmtsp) MultiSpan::from_span(self.fmtsp)
}; };
let mut refs: Vec<_> = self let refs_len = self.invalid_refs.len();
let mut refs = self
.invalid_refs .invalid_refs
.iter() .iter()
.map(|(r, pos)| (r.to_string(), self.arg_spans.get(*pos))) .map(|(r, pos)| (r.to_string(), self.arg_spans.get(*pos)));
.collect();
if self.names.is_empty() && !numbered_position_args { if self.names.is_empty() && !numbered_position_args {
e = self.ecx.mut_span_err( e = self.ecx.mut_span_err(
@ -290,28 +290,24 @@ impl<'a, 'b> Context<'a, 'b> {
), ),
); );
} else { } else {
let (arg_list, mut sp) = match refs.len() { let (arg_list, mut sp) = if refs_len == 1 {
1 => { let (reg, pos) = refs.next().unwrap();
let (reg, pos) = refs.pop().unwrap(); (
( format!("argument {}", reg),
format!("argument {}", reg), MultiSpan::from_span(*pos.unwrap_or(&self.fmtsp)),
MultiSpan::from_span(*pos.unwrap_or(&self.fmtsp)), )
) } else {
} let (mut refs, spans): (Vec<_>, Vec<_>) = refs.unzip();
_ => { let pos = MultiSpan::from_spans(spans.into_iter().map(|s| *s.unwrap()).collect());
let pos = let reg = refs.pop().unwrap();
MultiSpan::from_spans(refs.iter().map(|(_, p)| *p.unwrap()).collect()); (
let mut refs: Vec<String> = refs.iter().map(|(s, _)| s.to_owned()).collect(); format!(
let reg = refs.pop().unwrap(); "arguments {head} and {tail}",
( head = refs.join(", "),
format!( tail = reg,
"arguments {head} and {tail}", ),
tail = reg, pos,
head = refs.join(", ") )
),
pos,
)
}
}; };
if !self.is_literal { if !self.is_literal {
sp = MultiSpan::from_span(self.fmtsp); sp = MultiSpan::from_span(self.fmtsp);