Shift padding out of suggestions for format strings
This commit is contained in:
parent
dc13072b7b
commit
a859440092
2 changed files with 10 additions and 10 deletions
|
@ -1043,7 +1043,9 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt<'_>,
|
|||
let mut show_doc_note = false;
|
||||
|
||||
let mut suggestions = vec![];
|
||||
for sub in foreign::$kind::iter_subs(fmt_str) {
|
||||
// account for `"` and account for raw strings `r#`
|
||||
let padding = str_style.map(|i| i + 2).unwrap_or(1);
|
||||
for sub in foreign::$kind::iter_subs(fmt_str, padding) {
|
||||
let trn = match sub.translate() {
|
||||
Some(trn) => trn,
|
||||
|
||||
|
@ -1064,9 +1066,7 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt<'_>,
|
|||
}
|
||||
|
||||
if let Some((start, end)) = pos {
|
||||
// account for `"` and account for raw strings `r#`
|
||||
let padding = str_style.map(|i| i + 2).unwrap_or(1);
|
||||
let sp = fmt_sp.from_inner_byte_pos(start + padding, end + padding);
|
||||
let sp = fmt_sp.from_inner_byte_pos(start, end);
|
||||
suggestions.push((sp, trn));
|
||||
} else {
|
||||
diag.help(&format!("`{}` should be written as `{}`", sub, trn));
|
||||
|
|
|
@ -263,10 +263,10 @@ pub mod printf {
|
|||
}
|
||||
|
||||
/// Returns an iterator over all substitutions in a given string.
|
||||
pub fn iter_subs(s: &str) -> Substitutions<'_> {
|
||||
pub fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
|
||||
Substitutions {
|
||||
s,
|
||||
pos: 0,
|
||||
pos: start_pos,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -711,7 +711,7 @@ pub mod printf {
|
|||
#[test]
|
||||
fn test_iter() {
|
||||
let s = "The %d'th word %% is: `%.*s` %!\n";
|
||||
let subs: Vec<_> = iter_subs(s).map(|sub| sub.translate()).collect();
|
||||
let subs: Vec<_> = iter_subs(s, 0).map(|sub| sub.translate()).collect();
|
||||
assert_eq!(
|
||||
subs.iter().map(|ms| ms.as_ref().map(|s| &s[..])).collect::<Vec<_>>(),
|
||||
vec![Some("{}"), None, Some("{:.*}"), None]
|
||||
|
@ -804,10 +804,10 @@ pub mod shell {
|
|||
}
|
||||
|
||||
/// Returns an iterator over all substitutions in a given string.
|
||||
pub fn iter_subs(s: &str) -> Substitutions<'_> {
|
||||
pub fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
|
||||
Substitutions {
|
||||
s,
|
||||
pos: 0,
|
||||
pos: start_pos,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -940,7 +940,7 @@ pub mod shell {
|
|||
fn test_iter() {
|
||||
use super::iter_subs;
|
||||
let s = "The $0'th word $$ is: `$WORD` $!\n";
|
||||
let subs: Vec<_> = iter_subs(s).map(|sub| sub.translate()).collect();
|
||||
let subs: Vec<_> = iter_subs(s, 0).map(|sub| sub.translate()).collect();
|
||||
assert_eq!(
|
||||
subs.iter().map(|ms| ms.as_ref().map(|s| &s[..])).collect::<Vec<_>>(),
|
||||
vec![Some("{0}"), None, Some("{WORD}")]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue