diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-01-29 09:47:02 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-01-29 11:25:09 +1100 |
| commit | 306612ea60850249e0ad9e7a14fb1ce75fcd944e (patch) | |
| tree | a6ee91280ce791a5ddb179f19e8f58ee7c8366ea /compiler/rustc_pattern_analysis/src | |
| parent | 5bda589ff333dc324963bc653ce9e13bb176e6a5 (diff) | |
| download | rust-306612ea60850249e0ad9e7a14fb1ce75fcd944e.tar.gz rust-306612ea60850249e0ad9e7a14fb1ce75fcd944e.zip | |
Be more careful about interpreting a label/lifetime as a mistyped char literal.
Currently the parser will interpret any label/lifetime in certain positions as a mistyped char literal, on the assumption that the trailing single quote was accidentally omitted. This is reasonable for a something like 'a (because 'a' would be valid) but not reasonable for a something like 'abc (because 'abc' is not valid). This commit restricts this behaviour only to labels/lifetimes that would be valid char literals, via the new `could_be_unclosed_char_literal` function. The commit also augments the `label-is-actually-char.rs` test in a couple of ways: - Adds testing of labels/lifetimes with identifiers longer than one char, e.g. 'abc. - Adds a new match with simpler patterns, because the `recover_unclosed_char` call in `parse_pat_with_range_pat` was not being exercised (in this test or any other ui tests). Fixes #120397, an assertion failure, which was caused by this behaviour in the parser interacting with some new stricter char literal checking added in #120329.
Diffstat (limited to 'compiler/rustc_pattern_analysis/src')
0 files changed, 0 insertions, 0 deletions
