Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions compiler/rustc_parse/src/lexer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -231,9 +231,14 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
}
rustc_lexer::TokenKind::Ident => self.ident(start),
rustc_lexer::TokenKind::RawIdent => {
let sym = nfc_normalize(self.str_from(start + BytePos(2)));
let raw = self.str_from(start + BytePos(2));
let is_ascii = raw.is_ascii();
let sym = nfc_normalize(raw);
let span = self.mk_sp(start, self.pos);
self.psess.symbol_gallery.insert(sym, span);
// See `ident`: the gallery is only read by ASCII-skipping lints.
if !is_ascii {
self.psess.symbol_gallery.insert(sym, span);
}
if !sym.can_be_raw() {
self.dcx().emit_err(errors::CannotBeRawIdent { span, ident: sym });
}
Expand Down Expand Up @@ -486,9 +491,16 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
}

fn ident(&self, start: BytePos) -> TokenKind {
let sym = nfc_normalize(self.str_from(start));
let span = self.mk_sp(start, self.pos);
self.psess.symbol_gallery.insert(sym, span);
let s = self.str_from(start);
let is_ascii = s.is_ascii();
let sym = nfc_normalize(s);
// The symbol gallery is only ever read by lints that skip ASCII symbols
// (non-ascii idents, clippy disallowed scripts). nfc_normalize is the identity
// on ASCII and never maps non-ASCII to ASCII.
if !is_ascii {
let span = self.mk_sp(start, self.pos);
self.psess.symbol_gallery.insert(sym, span);
}
token::Ident(sym, IdentIsRaw::No)
}

Expand Down
Loading