Skip to content

Commit fdbaaac

Browse files
committed
Fix format string grammar in docs and improve alignment error message
1 parent 269d5b5 commit fdbaaac

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

compiler/rustc_parse_format/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,9 @@ impl<'input> Parser<'input> {
858858
self.errors.insert(
859859
0,
860860
ParseError {
861-
description: "expected format parameter to occur after `:`".to_owned(),
861+
description:
862+
"expected alignment specifier after `:` in format string; example: `{:>?}`"
863+
.to_owned(),
862864
note: None,
863865
label: format!("expected `{}` to occur after `:`", alignment),
864866
span: range,

library/alloc/src/fmt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@
354354
//! sign := '+' | '-'
355355
//! width := count
356356
//! precision := count | '*'
357-
//! type := '?' | 'x?' | 'X?' | identifier
357+
//! type := '?' | 'x?' | 'X?' | 'o' | 'x' | 'X' | 'p' | 'b' | 'e' | 'E'
358358
//! count := parameter | integer
359359
//! parameter := argument '$'
360360
//! ```

tests/ui/fmt/format-string-wrong-order.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ fn main() {
1313
format!("{?:#?}", bar);
1414
//~^ ERROR invalid format string: expected format parameter to occur after `:`
1515
format!("Hello {<5:}!", "x");
16-
//~^ ERROR invalid format string: expected format parameter to occur after `:`
16+
//~^ ERROR invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
1717
format!("Hello {^5:}!", "x");
18-
//~^ ERROR invalid format string: expected format parameter to occur after `:`
18+
//~^ ERROR invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
1919
format!("Hello {>5:}!", "x");
20-
//~^ ERROR invalid format string: expected format parameter to occur after `:`
20+
//~^ ERROR invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
21+
println!("{0:#X>18}", 12345);
22+
//~^ ERROR invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
2123
}

tests/ui/fmt/format-string-wrong-order.stderr

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,29 @@ LL | format!("{?:#?}", bar);
5050
|
5151
= note: `?` comes after `:`, try `:?` instead
5252

53-
error: invalid format string: expected format parameter to occur after `:`
53+
error: invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
5454
--> $DIR/format-string-wrong-order.rs:15:21
5555
|
5656
LL | format!("Hello {<5:}!", "x");
5757
| ^ expected `<` to occur after `:` in format string
5858

59-
error: invalid format string: expected format parameter to occur after `:`
59+
error: invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
6060
--> $DIR/format-string-wrong-order.rs:17:21
6161
|
6262
LL | format!("Hello {^5:}!", "x");
6363
| ^ expected `^` to occur after `:` in format string
6464

65-
error: invalid format string: expected format parameter to occur after `:`
65+
error: invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
6666
--> $DIR/format-string-wrong-order.rs:19:21
6767
|
6868
LL | format!("Hello {>5:}!", "x");
6969
| ^ expected `>` to occur after `:` in format string
7070

71-
error: aborting due to 9 previous errors
71+
error: invalid format string: expected alignment specifier after `:` in format string; example: `{:>?}`
72+
--> $DIR/format-string-wrong-order.rs:21:20
73+
|
74+
LL | println!("{0:#X>18}", 12345);
75+
| ^ expected `>` to occur after `:` in format string
76+
77+
error: aborting due to 10 previous errors
7278

0 commit comments

Comments
 (0)