@@ -16,8 +16,8 @@ use rustc_feature::{AttributeDuplicates, AttributeType, BUILTIN_ATTRIBUTE_MAP, B
1616use rustc_hir:: def_id:: LocalModDefId ;
1717use rustc_hir:: intravisit:: { self , Visitor } ;
1818use rustc_hir:: {
19- self as hir, self , CRATE_HIR_ID , CRATE_OWNER_ID , FnSig , ForeignItem , HirId , Item , ItemKind ,
20- MethodKind , Safety , Target , TraitItem ,
19+ self as hir, self , AssocItemKind , CRATE_HIR_ID , CRATE_OWNER_ID , FnSig , ForeignItem , HirId ,
20+ Item , ItemKind , MethodKind , Safety , Target , TraitItem ,
2121} ;
2222use rustc_macros:: LintDiagnostic ;
2323use rustc_middle:: hir:: nested_filter;
@@ -937,6 +937,23 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
937937 }
938938 }
939939
940+ fn check_doc_search_unbox ( & self , meta : & MetaItemInner , hir_id : HirId ) {
941+ let hir:: Node :: Item ( item) = self . tcx . hir_node ( hir_id) else {
942+ self . dcx ( ) . emit_err ( errors:: DocSearchUnboxInvalid { span : meta. span ( ) } ) ;
943+ return ;
944+ } ;
945+ match item. kind {
946+ ItemKind :: Enum ( _, generics) | ItemKind :: Struct ( _, generics)
947+ if generics. params . len ( ) != 0 => { }
948+ ItemKind :: Trait ( _, _, generics, _, items)
949+ if generics. params . len ( ) != 0
950+ || items. iter ( ) . any ( |item| matches ! ( item. kind, AssocItemKind :: Type ) ) => { }
951+ _ => {
952+ self . dcx ( ) . emit_err ( errors:: DocSearchUnboxInvalid { span : meta. span ( ) } ) ;
953+ }
954+ }
955+ }
956+
940957 /// Checks `#[doc(inline)]`/`#[doc(no_inline)]` attributes.
941958 ///
942959 /// A doc inlining attribute is invalid if it is applied to a non-`use` item, or
@@ -1149,6 +1166,12 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
11491166 }
11501167 }
11511168
1169+ sym:: search_unbox => {
1170+ if self . check_attr_not_crate_level ( meta, hir_id, "fake_variadic" ) {
1171+ self . check_doc_search_unbox ( meta, hir_id) ;
1172+ }
1173+ }
1174+
11521175 sym:: test => {
11531176 if self . check_attr_crate_level ( attr, meta, hir_id) {
11541177 self . check_test_attr ( meta, hir_id) ;
0 commit comments