Auto merge of #12466 - J-ZhengLi:issue12377, r=blyxyas
fix [`empty_docs`] trigger in proc-macro fixes: #12377 --- changelog: fix [`empty_docs`] trigger in proc-macros
This commit is contained in:
commit
99e8000b92
@ -14,7 +14,7 @@
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::intravisit::{self, Visitor};
|
||||
use rustc_hir::{AnonConst, Expr};
|
||||
use rustc_lint::{LateContext, LateLintPass};
|
||||
use rustc_lint::{LateContext, LateLintPass, LintContext};
|
||||
use rustc_middle::hir::nested_filter;
|
||||
use rustc_middle::lint::in_external_macro;
|
||||
use rustc_middle::ty;
|
||||
@ -538,7 +538,16 @@ fn fake_broken_link_callback<'a>(_: BrokenLink<'_>) -> Option<(CowStr<'a>, CowSt
|
||||
|
||||
suspicious_doc_comments::check(cx, attrs);
|
||||
|
||||
let (fragments, _) = attrs_to_doc_fragments(attrs.iter().map(|attr| (attr, None)), true);
|
||||
let (fragments, _) = attrs_to_doc_fragments(
|
||||
attrs.iter().filter_map(|attr| {
|
||||
if in_external_macro(cx.sess(), attr.span) {
|
||||
None
|
||||
} else {
|
||||
Some((attr, None))
|
||||
}
|
||||
}),
|
||||
true,
|
||||
);
|
||||
let mut doc = fragments.iter().fold(String::new(), |mut acc, fragment| {
|
||||
add_doc_fragment(&mut acc, fragment);
|
||||
acc
|
||||
|
@ -163,3 +163,16 @@ pub fn rewrite_struct(_args: TokenStream, input: TokenStream) -> TokenStream {
|
||||
|
||||
quote!(#item_struct).into()
|
||||
}
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn with_empty_docs(_attr: TokenStream, input: TokenStream) -> TokenStream {
|
||||
let item = parse_macro_input!(input as syn::Item);
|
||||
let attrs: Vec<syn::Attribute> = vec![];
|
||||
let doc_comment = "";
|
||||
quote! {
|
||||
#(#attrs)*
|
||||
#[doc = #doc_comment]
|
||||
#item
|
||||
}
|
||||
.into()
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
//@aux-build:proc_macro_attr.rs
|
||||
|
||||
#![allow(unused)]
|
||||
#![warn(clippy::empty_docs)]
|
||||
#![allow(clippy::mixed_attributes_style)]
|
||||
#![feature(extern_types)]
|
||||
|
||||
mod outer {
|
||||
//!
|
||||
@ -67,3 +70,17 @@ union Unite {
|
||||
y: i32,
|
||||
}
|
||||
}
|
||||
|
||||
mod issue_12377 {
|
||||
use proc_macro_attr::with_empty_docs;
|
||||
|
||||
#[with_empty_docs]
|
||||
extern "C" {
|
||||
type Test;
|
||||
}
|
||||
|
||||
#[with_empty_docs]
|
||||
struct Foo {
|
||||
a: u8,
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:6:5
|
||||
--> tests/ui/empty_docs.rs:9:5
|
||||
|
|
||||
LL | //!
|
||||
| ^^^
|
||||
@ -9,7 +9,7 @@ LL | //!
|
||||
= help: to override `-D warnings` add `#[allow(clippy::empty_docs)]`
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:14:5
|
||||
--> tests/ui/empty_docs.rs:17:5
|
||||
|
|
||||
LL | ///
|
||||
| ^^^
|
||||
@ -17,7 +17,7 @@ LL | ///
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:16:9
|
||||
--> tests/ui/empty_docs.rs:19:9
|
||||
|
|
||||
LL | ///
|
||||
| ^^^
|
||||
@ -25,7 +25,7 @@ LL | ///
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:27:5
|
||||
--> tests/ui/empty_docs.rs:30:5
|
||||
|
|
||||
LL | #[doc = ""]
|
||||
| ^^^^^^^^^^^
|
||||
@ -33,7 +33,7 @@ LL | #[doc = ""]
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:30:5
|
||||
--> tests/ui/empty_docs.rs:33:5
|
||||
|
|
||||
LL | / #[doc = ""]
|
||||
LL | | #[doc = ""]
|
||||
@ -42,7 +42,7 @@ LL | | #[doc = ""]
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:37:5
|
||||
--> tests/ui/empty_docs.rs:40:5
|
||||
|
|
||||
LL | ///
|
||||
| ^^^
|
||||
@ -50,7 +50,7 @@ LL | ///
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:50:13
|
||||
--> tests/ui/empty_docs.rs:53:13
|
||||
|
|
||||
LL | /*! */
|
||||
| ^^^^^^
|
||||
@ -58,7 +58,7 @@ LL | /*! */
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:58:13
|
||||
--> tests/ui/empty_docs.rs:61:13
|
||||
|
|
||||
LL | ///
|
||||
| ^^^
|
||||
@ -66,7 +66,7 @@ LL | ///
|
||||
= help: consider removing or filling it
|
||||
|
||||
error: empty doc comment
|
||||
--> tests/ui/empty_docs.rs:66:9
|
||||
--> tests/ui/empty_docs.rs:69:9
|
||||
|
|
||||
LL | ///
|
||||
| ^^^
|
||||
|
Loading…
Reference in New Issue
Block a user