Add error code to inner doc comment attribute error

This commit is contained in:
Guillaume Gomez 2020-04-22 11:08:50 +02:00
parent 2dc5b602ee
commit 3390ff97b2
3 changed files with 41 additions and 3 deletions

View file

@ -432,6 +432,7 @@ E0749: include_str!("./error_codes/E0749.md"),
E0750: include_str!("./error_codes/E0750.md"),
E0751: include_str!("./error_codes/E0751.md"),
E0752: include_str!("./error_codes/E0752.md"),
E0753: include_str!("./error_codes/E0753.md"),
;
// E0006, // merged with E0005
// E0008, // cannot bind by-move into a pattern guard

View file

@ -0,0 +1,31 @@
An inner doc comment was used in an invalid context.
Erroneous code example:
```compile_fail,E0753
fn foo() {}
//! foo
// ^ error!
fn main() {}
```
Inner document can only be used before items. For example:
```
//! A working comment applied to the module!
fn foo() {
//! Another working comment!
}
fn main() {}
```
In case you want to document the item following the doc comment, you might want
to use outer doc comment:
```
/// I am an outer doc comment
#[doc = "I am also an outer doc comment!"]
fn foo() {
// ...
}
```

View file

@ -4,7 +4,7 @@ use rustc_ast::attr;
use rustc_ast::token::{self, Nonterminal};
use rustc_ast::util::comments;
use rustc_ast_pretty::pprust;
use rustc_errors::PResult;
use rustc_errors::{error_code, PResult};
use rustc_span::{Span, Symbol};
use log::debug;
@ -50,10 +50,16 @@ impl<'a> Parser<'a> {
} else if let token::DocComment(s) = self.token.kind {
let attr = self.mk_doc_comment(s);
if attr.style != ast::AttrStyle::Outer {
self.struct_span_err(self.token.span, "expected outer doc comment")
self.sess
.span_diagnostic
.struct_span_err_with_code(
self.token.span,
"expected outer doc comment",
error_code!(E0753),
)
.note(
"inner doc comments like this (starting with \
`//!` or `/*!`) can only appear before items",
`//!` or `/*!`) can only appear before items",
)
.emit();
}