rust/src/test/ui/fmt/format-string-error.stderr
David Tolnay 423a5d3e85
Allow any identifier as format arg name
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.
2019-11-28 11:24:51 -08:00

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