Previously:
error: invalid format string: invalid argument name `_x`
--> src/main.rs:2:16
|
2 | println!("{_x}", a=0);
| ^^ invalid argument name in format string
|
= note: argument names cannot start with an underscore
Not supporting identifiers starting with underscore appears to have been
an arbitrary limitation from 2013 in code that was most likely never
reviewed:
https://github.com/rust-lang/rust/pull/8245/files#diff-0347868ef389c805e97636623e4a4ea6R277
The error message was dutifully improved in #50610 but is there any
reason that leading underscore would be a special case?
This commit updates the format_args parser to accept identifiers with
leading underscores.
125 lines
4 KiB
Text
125 lines
4 KiB
Text
error: invalid format string: expected `'}'` but string was terminated
|
|
--> $DIR/format-string-error.rs:4:16
|
|
|
|
|
LL | println!("{");
|
|
| -^ expected `'}'` in format string
|
|
| |
|
|
| because of this opening brace
|
|
|
|
|
= note: if you intended to print `{`, you can escape it using `{{`
|
|
|
|
error: invalid format string: unmatched `}` found
|
|
--> $DIR/format-string-error.rs:7:15
|
|
|
|
|
LL | println!("}");
|
|
| ^ unmatched `}` in format string
|
|
|
|
|
= note: if you intended to print `}`, you can escape it using `}}`
|
|
|
|
error: invalid format string: invalid argument name `_`
|
|
--> $DIR/format-string-error.rs:9:23
|
|
|
|
|
LL | let _ = format!("{_}", _ = 6usize);
|
|
| ^ invalid argument name in format string
|
|
|
|
|
= note: argument name cannot be a single underscore
|
|
|
|
error: invalid format string: invalid argument name `_`
|
|
--> $DIR/format-string-error.rs:11:25
|
|
|
|
|
LL | let _ = format!("{a:_}", a = "", _ = 0);
|
|
| ^ invalid argument name in format string
|
|
|
|
|
= note: argument name cannot be a single underscore
|
|
|
|
error: invalid format string: invalid argument name `_`
|
|
--> $DIR/format-string-error.rs:13:26
|
|
|
|
|
LL | let _ = format!("{a:._$}", a = "", _ = 0);
|
|
| ^ invalid argument name in format string
|
|
|
|
|
= note: argument name cannot be a single underscore
|
|
|
|
error: invalid format string: expected `'}'` but string was terminated
|
|
--> $DIR/format-string-error.rs:15:23
|
|
|
|
|
LL | let _ = format!("{");
|
|
| -^ expected `'}'` in format string
|
|
| |
|
|
| because of this opening brace
|
|
|
|
|
= note: if you intended to print `{`, you can escape it using `{{`
|
|
|
|
error: invalid format string: unmatched `}` found
|
|
--> $DIR/format-string-error.rs:17:22
|
|
|
|
|
LL | let _ = format!("}");
|
|
| ^ unmatched `}` in format string
|
|
|
|
|
= note: if you intended to print `}`, you can escape it using `}}`
|
|
|
|
error: invalid format string: expected `'}'`, found `'\'`
|
|
--> $DIR/format-string-error.rs:19:23
|
|
|
|
|
LL | let _ = format!("{\}");
|
|
| -^ expected `}` in format string
|
|
| |
|
|
| because of this opening brace
|
|
|
|
|
= note: if you intended to print `{`, you can escape it using `{{`
|
|
|
|
error: invalid format string: expected `'}'` but string was terminated
|
|
--> $DIR/format-string-error.rs:21:35
|
|
|
|
|
LL | let _ = format!("\n\n\n{\n\n\n");
|
|
| - ^ expected `'}'` in format string
|
|
| |
|
|
| because of this opening brace
|
|
|
|
|
= note: if you intended to print `{`, you can escape it using `{{`
|
|
|
|
error: invalid format string: expected `'}'` but string was terminated
|
|
--> $DIR/format-string-error.rs:27:3
|
|
|
|
|
LL | {"###);
|
|
| -^ expected `'}'` in format string
|
|
| |
|
|
| because of this opening brace
|
|
|
|
|
= note: if you intended to print `{`, you can escape it using `{{`
|
|
|
|
error: invalid format string: expected `'}'` but string was terminated
|
|
--> $DIR/format-string-error.rs:35:1
|
|
|
|
|
LL | {
|
|
| - because of this opening brace
|
|
LL |
|
|
LL | "###);
|
|
| ^ expected `'}'` in format string
|
|
|
|
|
= note: if you intended to print `{`, you can escape it using `{{`
|
|
|
|
error: invalid format string: unmatched `}` found
|
|
--> $DIR/format-string-error.rs:41:2
|
|
|
|
|
LL | }
|
|
| ^ unmatched `}` in format string
|
|
|
|
|
= note: if you intended to print `}`, you can escape it using `}}`
|
|
|
|
error: invalid format string: unmatched `}` found
|
|
--> $DIR/format-string-error.rs:49:9
|
|
|
|
|
LL | }
|
|
| ^ unmatched `}` in format string
|
|
|
|
|
= note: if you intended to print `}`, you can escape it using `}}`
|
|
|
|
error: 3 positional arguments in format string, but there are 2 arguments
|
|
--> $DIR/format-string-error.rs:53:15
|
|
|
|
|
LL | println!("{} {} {}", 1, 2);
|
|
| ^^ ^^ ^^ - -
|
|
|
|
error: aborting due to 14 previous errors
|
|
|