-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Print a note if a character literal contains a variation selector #88795
Conversation
r? @wesleywiser (rust-highfive has picked a reviewer for you, use r? to override) |
"character literal may only contain one codepoint", | ||
); | ||
if lit.chars().count() == 2 | ||
&& ('\u{FE00}'..='\u{FE0F}').contains(&lit.chars().last().unwrap()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't forget Variation Selectors Supplement and the Mongolian Variation Selectors... indeed, perhaps unicode_normalization::char::is_combining_mark
could offer a more general approach?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have expanded my implementation now to print a note for all combining marks, as you suggested. I've also added a suggestion to use the normalized form if the character can be represented as one codepoint (as in this example).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice!
7277aa7
to
0d8245b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fantastic, thank you!
@bors r+ rollup |
📌 Commit 0d8245b has been approved by |
Rollup of 12 pull requests Successful merges: - rust-lang#88795 (Print a note if a character literal contains a variation selector) - rust-lang#89015 (core::ascii::escape_default: reduce struct size) - rust-lang#89078 (Cleanup: Remove needless reference in ParentHirIterator) - rust-lang#89086 (Stabilize `Iterator::map_while`) - rust-lang#89096 ([bootstrap] Improve the error message when `ninja` is not found to link to installation instructions) - rust-lang#89113 (dont `.ensure()` the `thir_abstract_const` query call in `mir_build`) - rust-lang#89114 (Fixes a technicality regarding the size of C's `char` type) - rust-lang#89115 (:arrow_up: rust-analyzer) - rust-lang#89126 (Fix ICE when `indirect_structural_match` is allowed) - rust-lang#89141 (Impl `Error` for `FromSecsError` without foreign type) - rust-lang#89142 (Fix match for placeholder region) - rust-lang#89147 (add case for checking const refs in check_const_value_eq) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 12 pull requests Successful merges: - rust-lang#88795 (Print a note if a character literal contains a variation selector) - rust-lang#89015 (core::ascii::escape_default: reduce struct size) - rust-lang#89078 (Cleanup: Remove needless reference in ParentHirIterator) - rust-lang#89086 (Stabilize `Iterator::map_while`) - rust-lang#89096 ([bootstrap] Improve the error message when `ninja` is not found to link to installation instructions) - rust-lang#89113 (dont `.ensure()` the `thir_abstract_const` query call in `mir_build`) - rust-lang#89114 (Fixes a technicality regarding the size of C's `char` type) - rust-lang#89115 (:arrow_up: rust-analyzer) - rust-lang#89126 (Fix ICE when `indirect_structural_match` is allowed) - rust-lang#89141 (Impl `Error` for `FromSecsError` without foreign type) - rust-lang#89142 (Fix match for placeholder region) - rust-lang#89147 (add case for checking const refs in check_const_value_eq) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Fixes #88684.