diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-03-02 21:10:05 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-03-04 21:24:35 +0100 |
| commit | a66bf524c298ff177c3d3046ff8f2d02a81e4bc9 (patch) | |
| tree | 750eb4f4431102e607dfbba61f156367d82d1cd4 /compiler/rustc_passes/src | |
| parent | 6f32e3e187cfdf29ef7c785c644c95aee2897364 (diff) | |
| download | rust-a66bf524c298ff177c3d3046ff8f2d02a81e4bc9.tar.gz rust-a66bf524c298ff177c3d3046ff8f2d02a81e4bc9.zip | |
Add extra check for #[doc(test(...)] attribute
Diffstat (limited to 'compiler/rustc_passes/src')
| -rw-r--r-- | compiler/rustc_passes/src/check_attr.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs index 39245ea77e5..c84d29428ad 100644 --- a/compiler/rustc_passes/src/check_attr.rs +++ b/compiler/rustc_passes/src/check_attr.rs @@ -17,7 +17,9 @@ use rustc_hir::{ self, FnSig, ForeignItem, ForeignItemKind, HirId, Item, ItemKind, TraitItem, CRATE_HIR_ID, }; 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_span::symbol::{sym, Symbol}; use rustc_span::{Span, DUMMY_SP}; @@ -544,6 +546,21 @@ impl CheckAttrVisitor<'tcx> { { 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() { if 