about summary refs log tree commit diff
path: root/compiler/rustc_parse/src
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2022-09-26 11:12:06 +1000
committerNicholas Nethercote <n.nethercote@gmail.com>2022-09-26 13:41:58 +1000
commitceb25d125f98b82fe264e5b9d1b992f0766939a8 (patch)
tree82762dbf0a111aca4332aa62eefe194a03e7c3e0 /compiler/rustc_parse/src
parentaa6bfaf04b258e3e23d3f7063de4f2d37845ddec (diff)
downloadrust-ceb25d125f98b82fe264e5b9d1b992f0766939a8.tar.gz
rust-ceb25d125f98b82fe264e5b9d1b992f0766939a8.zip
Use less DRY in `cook_lexer_token`.
This is a case where a small amount of repetition results in code that
is faster and easier to read.
Diffstat (limited to 'compiler/rustc_parse/src')
-rw-r--r--compiler/rustc_parse/src/lexer/mod.rs38
1 files changed, 19 insertions, 19 deletions
diff --git a/compiler/rustc_parse/src/lexer/mod.rs b/compiler/rustc_parse/src/lexer/mod.rs
index c182e86332a..0f9d585230e 100644
--- a/compiler/rustc_parse/src/lexer/mod.rs
+++ b/compiler/rustc_parse/src/lexer/mod.rs
@@ -201,28 +201,28 @@ impl<'a> StringReader<'a> {
                 self.cook_doc_comment(content_start, content, CommentKind::Block, doc_style)
             }
             rustc_lexer::TokenKind::Whitespace => return None,
-            rustc_lexer::TokenKind::Ident
-            | rustc_lexer::TokenKind::RawIdent
-            | rustc_lexer::TokenKind::UnknownPrefix => {
-                let is_raw_ident = token == rustc_lexer::TokenKind::RawIdent;
-                let is_unknown_prefix = token == rustc_lexer::TokenKind::UnknownPrefix;
-                let mut ident_start = start;
-                if is_raw_ident {
-                    ident_start = ident_start + BytePos(2);
-                }
-                if is_unknown_prefix {
-                    self.report_unknown_prefix(start);
-                }
-                let sym = nfc_normalize(self.str_from(ident_start));
+            rustc_lexer::TokenKind::Ident => {
+                let sym = nfc_normalize(self.str_from(start));
                 let span = self.mk_sp(start, self.pos);
                 self.sess.symbol_gallery.insert(sym, span);
-                if is_raw_ident {
-                    if !sym.can_be_raw() {
-                        self.err_span(span, &format!("`{}` cannot be a raw identifier", sym));
-                    }
-                    self.sess.raw_identifier_spans.borrow_mut().push(span);
+                token::Ident(sym, false)
+            }
+            rustc_lexer::TokenKind::RawIdent => {
+                let sym = nfc_normalize(self.str_from(start + BytePos(2)));
+                let span = self.mk_sp(start, self.pos);
+                self.sess.symbol_gallery.insert(sym, span);
+                if !sym.can_be_raw() {
+                    self.err_span(span, &format!("`{}` cannot be a raw identifier", sym));
                 }
-                token::Ident(sym, is_raw_ident)
+                self.sess.raw_identifier_spans.borrow_mut().push(span);
+                token::Ident(sym, true)
+            }
+            rustc_lexer::TokenKind::UnknownPrefix => {
+                self.report_unknown_prefix(start);
+                let sym = nfc_normalize(self.str_from(start));
+                let span = self.mk_sp(start, self.pos);
+                self.sess.symbol_gallery.insert(sym, span);
+                token::Ident(sym, false)
             }
             rustc_lexer::TokenKind::InvalidIdent
                 // Do not recover an identifier with emoji if the codepoint is a confusable