mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 10:13:54 +00:00
Rollup merge of #68669 - euclio:doc-comment-stmt, r=estebank
suggest adding space in accidental doc comments Fixes #67553. r? @estebank
This commit is contained in:
commit
b3e63f28b3
@ -7,13 +7,13 @@ use crate::maybe_whole;
|
||||
use crate::DirectoryOwnership;
|
||||
|
||||
use rustc_errors::{Applicability, PResult};
|
||||
use rustc_span::source_map::{respan, Span};
|
||||
use rustc_span::source_map::{respan, BytePos, Span};
|
||||
use rustc_span::symbol::{kw, sym, Symbol};
|
||||
use syntax::ast;
|
||||
use syntax::ast::{AttrStyle, AttrVec, Attribute, Mac, MacStmtStyle, VisibilityKind};
|
||||
use syntax::ast::{Block, BlockCheckMode, Expr, ExprKind, Local, Stmt, StmtKind, DUMMY_NODE_ID};
|
||||
use syntax::ptr::P;
|
||||
use syntax::token;
|
||||
use syntax::token::{self, TokenKind};
|
||||
use syntax::util::classify;
|
||||
|
||||
use std::mem;
|
||||
@ -431,6 +431,23 @@ impl<'a> Parser<'a> {
|
||||
if let Err(mut e) =
|
||||
self.expect_one_of(&[], &[token::Semi, token::CloseDelim(token::Brace)])
|
||||
{
|
||||
if let TokenKind::DocComment(..) = self.token.kind {
|
||||
if let Ok(snippet) = self.span_to_snippet(self.token.span) {
|
||||
let sp = self.token.span;
|
||||
let marker = &snippet[..3];
|
||||
let (comment_marker, doc_comment_marker) = marker.split_at(2);
|
||||
|
||||
e.span_suggestion(
|
||||
sp.with_hi(sp.lo() + BytePos(marker.len() as u32)),
|
||||
&format!(
|
||||
"add a space before `{}` to use a regular comment",
|
||||
doc_comment_marker,
|
||||
),
|
||||
format!("{} {}", comment_marker, doc_comment_marker),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
}
|
||||
e.emit();
|
||||
self.recover_stmt();
|
||||
// Don't complain about type errors in body tail after parse error (#57383).
|
||||
|
20
src/test/ui/parser/doc-comment-in-stmt.rs
Normal file
20
src/test/ui/parser/doc-comment-in-stmt.rs
Normal file
@ -0,0 +1,20 @@
|
||||
fn foo() -> bool {
|
||||
false
|
||||
//!self.allow_ty_infer()
|
||||
//~^ ERROR found doc comment
|
||||
}
|
||||
|
||||
fn bar() -> bool {
|
||||
false
|
||||
/*! bar */ //~ ERROR found doc comment
|
||||
}
|
||||
|
||||
fn baz() -> i32 {
|
||||
1 /** baz */ //~ ERROR found doc comment
|
||||
}
|
||||
|
||||
fn quux() -> i32 {
|
||||
2 /*! quux */ //~ ERROR found doc comment
|
||||
}
|
||||
|
||||
fn main() {}
|
50
src/test/ui/parser/doc-comment-in-stmt.stderr
Normal file
50
src/test/ui/parser/doc-comment-in-stmt.stderr
Normal file
@ -0,0 +1,50 @@
|
||||
error: expected one of `.`, `;`, `?`, `}`, or an operator, found doc comment `//!self.allow_ty_infer()`
|
||||
--> $DIR/doc-comment-in-stmt.rs:3:5
|
||||
|
|
||||
LL | false
|
||||
| - expected one of `.`, `;`, `?`, `}`, or an operator
|
||||
LL | //!self.allow_ty_infer()
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ unexpected token
|
||||
|
|
||||
help: add a space before `!` to use a regular comment
|
||||
|
|
||||
LL | // !self.allow_ty_infer()
|
||||
| ^^^^
|
||||
|
||||
error: expected one of `.`, `;`, `?`, `}`, or an operator, found doc comment `/*! bar */`
|
||||
--> $DIR/doc-comment-in-stmt.rs:9:5
|
||||
|
|
||||
LL | false
|
||||
| - expected one of `.`, `;`, `?`, `}`, or an operator
|
||||
LL | /*! bar */
|
||||
| ^^^^^^^^^^ unexpected token
|
||||
|
|
||||
help: add a space before `!` to use a regular comment
|
||||
|
|
||||
LL | /* ! bar */
|
||||
| ^^^^
|
||||
|
||||
error: expected one of `.`, `;`, `?`, `}`, or an operator, found doc comment `/** baz */`
|
||||
--> $DIR/doc-comment-in-stmt.rs:13:7
|
||||
|
|
||||
LL | 1 /** baz */
|
||||
| ^^^^^^^^^^ expected one of `.`, `;`, `?`, `}`, or an operator
|
||||
|
|
||||
help: add a space before `*` to use a regular comment
|
||||
|
|
||||
LL | 1 /* * baz */
|
||||
| ^^^^
|
||||
|
||||
error: expected one of `.`, `;`, `?`, `}`, or an operator, found doc comment `/*! quux */`
|
||||
--> $DIR/doc-comment-in-stmt.rs:17:7
|
||||
|
|
||||
LL | 2 /*! quux */
|
||||
| ^^^^^^^^^^^ expected one of `.`, `;`, `?`, `}`, or an operator
|
||||
|
|
||||
help: add a space before `!` to use a regular comment
|
||||
|
|
||||
LL | 2 /* ! quux */
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user