Move where doc comment meant as comment check
The new place makes more sense and covers more cases beyond individual statements. ``` error: expected one of `.`, `;`, `?`, `else`, or an operator, found doc comment `//!foo --> $DIR/doc-comment-in-stmt.rs:25:22 | LL | let y = x.max(1) //!foo | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected one of `.`, `;`, `?`, `else`, or an operator | help: add a space before `!` to write a regular comment | LL | let y = x.max(1) // !foo | + ``` Fix #65329.
This commit is contained in:
parent
cc705b8012
commit
20de5c762d
5 changed files with 85 additions and 37 deletions
|
@ -39,7 +39,7 @@ use rustc_errors::{
|
|||
use rustc_session::errors::ExprParenthesesNeeded;
|
||||
use rustc_span::source_map::Spanned;
|
||||
use rustc_span::symbol::{kw, sym, Ident};
|
||||
use rustc_span::{Span, SpanSnippetError, Symbol, DUMMY_SP};
|
||||
use rustc_span::{BytePos, Span, SpanSnippetError, Symbol, DUMMY_SP};
|
||||
use std::mem::take;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use thin_vec::{thin_vec, ThinVec};
|
||||
|
@ -648,6 +648,26 @@ impl<'a> Parser<'a> {
|
|||
);
|
||||
}
|
||||
|
||||
if let token::DocComment(kind, style, _) = self.token.kind {
|
||||
// We have something like `expr //!val` where the user likely meant `expr // !val`
|
||||
let pos = self.token.span.lo() + BytePos(2);
|
||||
let span = self.token.span.with_lo(pos).with_hi(pos);
|
||||
err.span_suggestion_verbose(
|
||||
span,
|
||||
format!(
|
||||
"add a space before {} to write a regular comment",
|
||||
match (kind, style) {
|
||||
(token::CommentKind::Line, ast::AttrStyle::Inner) => "`!`",
|
||||
(token::CommentKind::Block, ast::AttrStyle::Inner) => "`!`",
|
||||
(token::CommentKind::Line, ast::AttrStyle::Outer) => "the last `/`",
|
||||
(token::CommentKind::Block, ast::AttrStyle::Outer) => "the last `*`",
|
||||
},
|
||||
),
|
||||
" ".to_string(),
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
}
|
||||
|
||||
// Add suggestion for a missing closing angle bracket if '>' is included in expected_tokens
|
||||
// there are unclosed angle brackets
|
||||
if self.unmatched_angle_bracket_count > 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue