Lyricdev
GitHub

LYR-LEX0012

a byte string holding no byte, or an '@' without a name

error · spec 01-lexical

A byte string b"…" holds a character beyond ASCII or a \u{…} escape, which name characters and not bytes; or an @ is followed by neither a name nor [.

Explanation

A byte string is a uint8[]: ASCII text and the escapes, \xNN for any byte. A character beyond ASCII has no single byte, and \u{…} names a character; write their bytes as \xNN. An @ opens an attribute and is one token with the name after it, @Name, or opens a group, @[…].

Write the bytes as \xNN escapes; write an attribute's name directly after its @.

Wrong

fn main(): void {
    let b = b"é";
    let _ = b;
}
fn main(): void {
    let b = b"\xC3\xA9";
    let _ = b;
}