format: refactor report_invalid_references
This commit is contained in:
parent
3d052c920b
commit
8866f68a4d
1 changed files with 21 additions and 25 deletions
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue