File tree Expand file tree Collapse file tree 7 files changed +32
-10
lines changed Expand file tree Collapse file tree 7 files changed +32
-10
lines changed Original file line number Diff line number Diff line change @@ -188,6 +188,9 @@ passes_doc_auto_cfg_expects_hide_or_show =
188
188
passes_doc_auto_cfg_hide_show_expects_list =
189
189
`#![doc(auto_cfg({ $attr_name } (...)))]` only expects a list of items
190
190
191
+ passes_doc_auto_cfg_hide_show_unexpected_item =
192
+ `#![doc(auto_cfg({ $attr_name } (...)))]` only accepts identifiers or key/values items
193
+
191
194
passes_doc_auto_cfg_wrong_literal =
192
195
`expected boolean for #[doc(auto_cfg = ...)]`
193
196
Original file line number Diff line number Diff line change @@ -1334,7 +1334,20 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
1334
1334
meta. span ,
1335
1335
errors:: DocAutoCfgExpectsHideOrShow ,
1336
1336
) ;
1337
- } else if item. meta_item_list ( ) . is_none ( ) {
1337
+ } else if let Some ( list) = item. meta_item_list ( ) {
1338
+ for item in list {
1339
+ if item. meta_item_list ( ) . is_some ( ) {
1340
+ self . tcx . emit_node_span_lint (
1341
+ INVALID_DOC_ATTRIBUTES ,
1342
+ hir_id,
1343
+ item. span ( ) ,
1344
+ errors:: DocAutoCfgHideShowUnexpectedItem {
1345
+ attr_name : attr_name. as_str ( ) ,
1346
+ } ,
1347
+ ) ;
1348
+ }
1349
+ }
1350
+ } else {
1338
1351
self . tcx . emit_node_span_lint (
1339
1352
INVALID_DOC_ATTRIBUTES ,
1340
1353
hir_id,
Original file line number Diff line number Diff line change @@ -346,6 +346,12 @@ pub(crate) struct DocAutoCfgHideShowExpectsList<'a> {
346
346
pub attr_name : & ' a str ,
347
347
}
348
348
349
+ #[ derive( LintDiagnostic ) ]
350
+ #[ diag( passes_doc_auto_cfg_hide_show_unexpected_item) ]
351
+ pub ( crate ) struct DocAutoCfgHideShowUnexpectedItem < ' a > {
352
+ pub attr_name : & ' a str ,
353
+ }
354
+
349
355
#[ derive( LintDiagnostic ) ]
350
356
#[ diag( passes_doc_test_unknown_any) ]
351
357
pub ( crate ) struct DocTestUnknownAny {
Original file line number Diff line number Diff line change 78
78
#![ cfg_attr(
79
79
not( bootstrap) ,
80
80
doc( auto_cfg( hide(
81
- test,
82
81
no_global_oom_handling,
83
82
no_rc,
84
83
no_sync,
Original file line number Diff line number Diff line change 243
243
not( no_global_oom_handling)
244
244
) )
245
245
) ]
246
- #![ cfg_attr(
247
- not( bootstrap) ,
248
- doc( auto_cfg( hide(
249
- test,
250
- no_global_oom_handling,
251
- ) ) )
252
- ) ]
246
+ #![ cfg_attr( not( bootstrap) , doc( auto_cfg( hide( no_global_oom_handling) ) ) ) ]
253
247
// Don't link to std. We are std.
254
248
#![ no_std]
255
249
// Tell the compiler to link to either panic_abort or panic_unwind
Original file line number Diff line number Diff line change 1
1
#![ doc( auto_cfg( hide = "test" ) ) ] //~ ERROR
2
2
#![ doc( auto_cfg( hide) ) ] //~ ERROR
3
+ #![ doc( auto_cfg( hide( not( windows) ) ) ) ] //~ ERROR
Original file line number Diff line number Diff line change @@ -12,5 +12,11 @@ error: `#![doc(auto_cfg(hide(...)))]` only expects a list of items
12
12
LL | #![doc(auto_cfg(hide))]
13
13
| ^^^^^^^^^^^^^^
14
14
15
- error: aborting due to 2 previous errors
15
+ error: `#![doc(auto_cfg(hide(...)))]` only accepts identifiers or key/values items
16
+ --> $DIR/doc_cfg_hide.rs:3:22
17
+ |
18
+ LL | #![doc(auto_cfg(hide(not(windows))))]
19
+ | ^^^^^^^^^^^^
20
+
21
+ error: aborting due to 3 previous errors
16
22
You can’t perform that action at this time.
0 commit comments