There are three kinds of "byte" literals: byte literals, byte string literals, and raw byte string literals. None are allowed to have non-ASCII chars in them. Two `EscapeError` variants exist for when that constraint is violated. - `NonAsciiCharInByte`: used for byte literals and byte string literals. - `NonAsciiCharInByteString`: used for raw byte string literals. As a result, the messages for raw byte string literals use different wording, without good reason. Also, byte string literals are incorrectly described as "byte constants" in some error messages. This commit eliminates `NonAsciiCharInByteString` so the three cases are handled similarly, and described correctly. The `mode` is enough to distinguish them. Note: Some existing error messages mention "byte constants" and some mention "byte literals". I went with the latter here, because it's a more correct name, as used by the Reference.
54 lines
1.4 KiB
Text
54 lines
1.4 KiB
Text
error: unknown byte escape: `f`
|
|
--> $DIR/byte-literals.rs:3:21
|
|
|
|
|
LL | static FOO: u8 = b'\f';
|
|
| ^ unknown byte escape
|
|
|
|
|
= help: for more information, visit <https://static.rust-lang.org/doc/master/reference.html#literals>
|
|
|
|
error: unknown byte escape: `f`
|
|
--> $DIR/byte-literals.rs:6:8
|
|
|
|
|
LL | b'\f';
|
|
| ^ unknown byte escape
|
|
|
|
|
= help: for more information, visit <https://static.rust-lang.org/doc/master/reference.html#literals>
|
|
|
|
error: invalid character in numeric character escape: `Z`
|
|
--> $DIR/byte-literals.rs:7:10
|
|
|
|
|
LL | b'\x0Z';
|
|
| ^ invalid character in numeric character escape
|
|
|
|
error: byte constant must be escaped: `\t`
|
|
--> $DIR/byte-literals.rs:8:7
|
|
|
|
|
LL | b' ';
|
|
| ^^^^ help: escape the character: `\t`
|
|
|
|
error: byte constant must be escaped: `'`
|
|
--> $DIR/byte-literals.rs:9:7
|
|
|
|
|
LL | b''';
|
|
| ^ help: escape the character: `\'`
|
|
|
|
error: non-ASCII character in byte literal
|
|
--> $DIR/byte-literals.rs:10:7
|
|
|
|
|
LL | b'é';
|
|
| ^ must be ASCII
|
|
|
|
|
help: if you meant to use the unicode code point for 'é', use a \xHH escape
|
|
|
|
|
LL | b'\xE9';
|
|
| ~~~~
|
|
|
|
error[E0763]: unterminated byte constant
|
|
--> $DIR/byte-literals.rs:11:6
|
|
|
|
|
LL | b'a
|
|
| ^^^^
|
|
|
|
error: aborting due to 7 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0763`.
|