Skip to content

Commit a859440

Browse files
Shift padding out of suggestions for format strings
1 parent dc13072 commit a859440

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/libsyntax_ext/format.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,9 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt<'_>,
10431043
let mut show_doc_note = false;
10441044

10451045
let mut suggestions = vec![];
1046-
for sub in foreign::$kind::iter_subs(fmt_str) {
1046+
// account for `"` and account for raw strings `r#`
1047+
let padding = str_style.map(|i| i + 2).unwrap_or(1);
1048+
for sub in foreign::$kind::iter_subs(fmt_str, padding) {
10471049
let trn = match sub.translate() {
10481050
Some(trn) => trn,
10491051

@@ -1064,9 +1066,7 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt<'_>,
10641066
}
10651067

10661068
if let Some((start, end)) = pos {
1067-
// account for `"` and account for raw strings `r#`
1068-
let padding = str_style.map(|i| i + 2).unwrap_or(1);
1069-
let sp = fmt_sp.from_inner_byte_pos(start + padding, end + padding);
1069+
let sp = fmt_sp.from_inner_byte_pos(start, end);
10701070
suggestions.push((sp, trn));
10711071
} else {
10721072
diag.help(&format!("`{}` should be written as `{}`", sub, trn));

src/libsyntax_ext/format_foreign.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,10 @@ pub mod printf {
263263
}
264264

265265
/// Returns an iterator over all substitutions in a given string.
266-
pub fn iter_subs(s: &str) -> Substitutions<'_> {
266+
pub fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
267267
Substitutions {
268268
s,
269-
pos: 0,
269+
pos: start_pos,
270270
}
271271
}
272272

@@ -711,7 +711,7 @@ pub mod printf {
711711
#[test]
712712
fn test_iter() {
713713
let s = "The %d'th word %% is: `%.*s` %!\n";
714-
let subs: Vec<_> = iter_subs(s).map(|sub| sub.translate()).collect();
714+
let subs: Vec<_> = iter_subs(s, 0).map(|sub| sub.translate()).collect();
715715
assert_eq!(
716716
subs.iter().map(|ms| ms.as_ref().map(|s| &s[..])).collect::<Vec<_>>(),
717717
vec![Some("{}"), None, Some("{:.*}"), None]
@@ -804,10 +804,10 @@ pub mod shell {
804804
}
805805

806806
/// Returns an iterator over all substitutions in a given string.
807-
pub fn iter_subs(s: &str) -> Substitutions<'_> {
807+
pub fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
808808
Substitutions {
809809
s,
810-
pos: 0,
810+
pos: start_pos,
811811
}
812812
}
813813

@@ -940,7 +940,7 @@ pub mod shell {
940940
fn test_iter() {
941941
use super::iter_subs;
942942
let s = "The $0'th word $$ is: `$WORD` $!\n";
943-
let subs: Vec<_> = iter_subs(s).map(|sub| sub.translate()).collect();
943+
let subs: Vec<_> = iter_subs(s, 0).map(|sub| sub.translate()).collect();
944944
assert_eq!(
945945
subs.iter().map(|ms| ms.as_ref().map(|s| &s[..])).collect::<Vec<_>>(),
946946
vec![Some("{0}"), None, Some("{WORD}")]

0 commit comments

Comments
 (0)