mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-10 08:57:36 +00:00
Add extra check for #[doc(test(...)] attribute
This commit is contained in:
parent
6f32e3e187
commit
a66bf524c2
@ -3061,14 +3061,17 @@ declare_lint! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare_lint! {
|
declare_lint! {
|
||||||
/// The `invalid_doc_attributes` lint detects when the `#[doc(...)]` is
|
/// The `invalid_doc_attribute` lint detects when the `#[doc(...)]` is
|
||||||
/// misused.
|
/// misused.
|
||||||
///
|
///
|
||||||
/// ### Example
|
/// ### Example
|
||||||
///
|
///
|
||||||
/// ```rust,compile_fail
|
/// ```rust,compile_fail
|
||||||
/// #![deny(warnings)]
|
/// #![deny(warnings)]
|
||||||
/// #[doc(test(no_crate_inject))]
|
///
|
||||||
|
/// pub mod submodule {
|
||||||
|
/// #![doc(test(no_crate_inject))]
|
||||||
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// {{produces}}
|
/// {{produces}}
|
||||||
@ -3083,6 +3086,6 @@ declare_lint! {
|
|||||||
"detects invalid `#[doc(...)]` attributes",
|
"detects invalid `#[doc(...)]` attributes",
|
||||||
@future_incompatible = FutureIncompatibleInfo {
|
@future_incompatible = FutureIncompatibleInfo {
|
||||||
reference: "issue #82730 <https://github.com/rust-lang/rust/issues/82730>",
|
reference: "issue #82730 <https://github.com/rust-lang/rust/issues/82730>",
|
||||||
edition: Some(Edition::Edition2021),
|
edition: None,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,9 @@ use rustc_hir::{
|
|||||||
self, FnSig, ForeignItem, ForeignItemKind, HirId, Item, ItemKind, TraitItem, CRATE_HIR_ID,
|
self, FnSig, ForeignItem, ForeignItemKind, HirId, Item, ItemKind, TraitItem, CRATE_HIR_ID,
|
||||||
};
|
};
|
||||||
use rustc_hir::{MethodKind, Target};
|
use rustc_hir::{MethodKind, Target};
|
||||||
use rustc_session::lint::builtin::{CONFLICTING_REPR_HINTS, UNUSED_ATTRIBUTES};
|
use rustc_session::lint::builtin::{
|
||||||
|
CONFLICTING_REPR_HINTS, INVALID_DOC_ATTRIBUTE, UNUSED_ATTRIBUTES,
|
||||||
|
};
|
||||||
use rustc_session::parse::feature_err;
|
use rustc_session::parse::feature_err;
|
||||||
use rustc_span::symbol::{sym, Symbol};
|
use rustc_span::symbol::{sym, Symbol};
|
||||||
use rustc_span::{Span, DUMMY_SP};
|
use rustc_span::{Span, DUMMY_SP};
|
||||||
@ -544,6 +546,21 @@ impl CheckAttrVisitor<'tcx> {
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
} else if meta.has_name(sym::test) {
|
||||||
|
if CRATE_HIR_ID != hir_id {
|
||||||
|
self.tcx.struct_span_lint_hir(
|
||||||
|
INVALID_DOC_ATTRIBUTE,
|
||||||
|
hir_id,
|
||||||
|
meta.span(),
|
||||||
|
|lint| {
|
||||||
|
lint.build(
|
||||||
|
"`#![doc(test(...)]` is only allowed as a crate level attribute"
|
||||||
|
)
|
||||||
|
.emit();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else if let Some(i_meta) = meta.meta_item() {
|
} else if let Some(i_meta) = meta.meta_item() {
|
||||||
if ![
|
if ![
|
||||||
sym::cfg,
|
sym::cfg,
|
||||||
|
Loading…
Reference in New Issue
Block a user