mirror of https://github.com/rust-lang/rust.git
![]() Because of an ambiguity with const closures, the parser needs to ensure that for a const item, the `const` keyword isn't followed by a `move` or `static` keyword, as that would indicate a const closure: ```rust fn main() { const move // ... } ``` This check did not take raw identifiers into account, therefore being unable to distinguish between `const move` and `const r#move`. The latter is obviously not a const closure, so it should be allowed as a const item. This fixes the check in the parser to only treat `const ...` as a const closure if it's followed by the *proper keyword*, and not a raw identifier. Additionally, this adds a large test that tests for all raw identifiers in all kinds of positions, including `const`, to prevent issues like this one from occurring again. |
||
---|---|---|
.. | ||
issue-70677-panic-on-unterminated-raw-str-at-eof.rs | ||
issue-70677-panic-on-unterminated-raw-str-at-eof.stderr | ||
raw-byte-string-eof.rs | ||
raw-byte-string-eof.stderr | ||
raw-byte-string-literals.rs | ||
raw-byte-string-literals.stderr | ||
raw-idents.rs | ||
raw-literal-keywords.rs | ||
raw-literal-keywords.stderr | ||
raw-literal-self.rs | ||
raw-literal-self.stderr | ||
raw-literal-underscore.rs | ||
raw-literal-underscore.stderr | ||
raw-str-delim.rs | ||
raw-str-delim.stderr | ||
raw-str-in-macro-call.rs | ||
raw-str-unbalanced.rs | ||
raw-str-unbalanced.stderr | ||
raw-str-unterminated.rs | ||
raw-str-unterminated.stderr | ||
raw-string-2.rs | ||
raw-string-2.stderr | ||
raw-string.rs | ||
raw-string.stderr | ||
too-many-hash.rs | ||
too-many-hash.stderr |