|
1 | | -use rustc_ast::ast::AttrStyle; |
| 1 | +use rustc_ast::ast::{self, AttrStyle}; |
2 | 2 | use rustc_ast::token::{self, CommentKind, Token, TokenKind}; |
3 | 3 | use rustc_ast::tokenstream::{Spacing, TokenStream}; |
4 | 4 | use rustc_errors::{error_code, Applicability, DiagnosticBuilder, FatalError, PResult}; |
5 | 5 | use rustc_lexer::unescape::{self, Mode}; |
6 | 6 | use rustc_lexer::{Base, DocStyle, RawStrError}; |
| 7 | +use rustc_session::lint::builtin::RESERVED_PREFIX; |
| 8 | +use rustc_session::lint::BuiltinLintDiagnostics; |
7 | 9 | use rustc_session::parse::ParseSess; |
8 | 10 | use rustc_span::edition::Edition; |
9 | 11 | use rustc_span::symbol::{sym, Symbol}; |
@@ -498,17 +500,24 @@ impl<'a> StringReader<'a> { |
498 | 500 | FatalError.raise() |
499 | 501 | } |
500 | 502 |
|
| 503 | + // See RFC 3101. |
501 | 504 | fn report_reserved_prefix(&self, start: BytePos) { |
502 | | - // See RFC 3101. |
| 505 | + let prefix_span = self.mk_sp(start, self.pos); |
| 506 | + let msg = format!("prefix `{}` is unknown", self.str_from_to(start, self.pos)); |
| 507 | + |
503 | 508 | if self.sess.edition < Edition::Edition2021 { |
| 509 | + self.sess.buffer_lint_with_diagnostic( |
| 510 | + &RESERVED_PREFIX, |
| 511 | + prefix_span, |
| 512 | + ast::CRATE_NODE_ID, |
| 513 | + &msg, |
| 514 | + BuiltinLintDiagnostics::ReservedPrefix(prefix_span), |
| 515 | + ); |
504 | 516 | return; |
505 | 517 | } |
506 | 518 |
|
507 | | - let mut err = self.sess.span_diagnostic.struct_span_err( |
508 | | - self.mk_sp(start, self.pos), |
509 | | - &format!("prefix `{}` is unknown", self.str_from_to(start, self.pos)), |
510 | | - ); |
511 | | - err.span_label(self.mk_sp(start, self.pos), "unknown prefix"); |
| 519 | + let mut err = self.sess.span_diagnostic.struct_span_err(prefix_span, &msg); |
| 520 | + err.span_label(prefix_span, "unknown prefix"); |
512 | 521 | err.span_suggestion_verbose( |
513 | 522 | self.mk_sp(self.pos, self.pos), |
514 | 523 | "consider inserting whitespace here", |
|
0 commit comments