@@ -72,12 +72,14 @@ const ANNOTATIONS_TO_IGNORE: &[&str] = &[
72
72
"//@ normalize-stderr" ,
73
73
] ;
74
74
75
+ const LINELENGTH_CHECK : & str = "linelength" ;
76
+
75
77
// If you edit this, also edit where it gets used in `check` (calling `contains_ignore_directives`)
76
78
const CONFIGURABLE_CHECKS : [ & str ; 11 ] = [
77
79
"cr" ,
78
80
"undocumented-unsafe" ,
79
81
"tab" ,
80
- "linelength" ,
82
+ LINELENGTH_CHECK ,
81
83
"filelength" ,
82
84
"end-whitespace" ,
83
85
"trailing-newlines" ,
@@ -250,14 +252,24 @@ enum Directive {
250
252
// Use a fixed size array in the return type to catch mistakes with changing `CONFIGURABLE_CHECKS`
251
253
// without changing the code in `check` easier.
252
254
fn contains_ignore_directives < const N : usize > (
255
+ path_str : & str ,
253
256
can_contain : bool ,
254
257
contents : & str ,
255
258
checks : [ & str ; N ] ,
256
259
) -> [ Directive ; N ] {
257
- if !can_contain {
260
+ // The rustdoc-json test syntax often requires very long lines, so the checks
261
+ // for long lines aren't really useful.
262
+ let always_ignore_linelength = path_str. contains ( "rustdoc-json" ) ;
263
+
264
+ if !can_contain && !always_ignore_linelength {
258
265
return [ Directive :: Deny ; N ] ;
259
266
}
267
+
260
268
checks. map ( |check| {
269
+ if check == LINELENGTH_CHECK && always_ignore_linelength {
270
+ return Directive :: Ignore ( false ) ;
271
+ }
272
+
261
273
// Update `can_contain` when changing this
262
274
if contents. contains ( & format ! ( "// ignore-tidy-{check}" ) )
263
275
|| contents. contains ( & format ! ( "# ignore-tidy-{check}" ) )
@@ -367,6 +379,7 @@ pub fn check(path: &Path, bad: &mut bool) {
367
379
368
380
walk ( path, skip, & mut |entry, contents| {
369
381
let file = entry. path ( ) ;
382
+ let path_str = file. to_string_lossy ( ) ;
370
383
let filename = file. file_name ( ) . unwrap ( ) . to_string_lossy ( ) ;
371
384
372
385
let is_css_file = filename. ends_with ( ".css" ) ;
@@ -422,7 +435,7 @@ pub fn check(path: &Path, bad: &mut bool) {
422
435
mut skip_copyright,
423
436
mut skip_dbg,
424
437
mut skip_odd_backticks,
425
- ] = contains_ignore_directives ( can_contain, & contents, CONFIGURABLE_CHECKS ) ;
438
+ ] = contains_ignore_directives ( & path_str , can_contain, & contents, CONFIGURABLE_CHECKS ) ;
426
439
let mut leading_new_lines = false ;
427
440
let mut trailing_new_lines = 0 ;
428
441
let mut lines = 0 ;
@@ -502,7 +515,7 @@ pub fn check(path: &Path, bad: &mut bool) {
502
515
let contains_potential_directive =
503
516
possible_line_start && ( line. contains ( "-tidy" ) || line. contains ( "tidy-" ) ) ;
504
517
let has_recognized_ignore_directive =
505
- contains_ignore_directives ( can_contain, line, CONFIGURABLE_CHECKS )
518
+ contains_ignore_directives ( & path_str , can_contain, line, CONFIGURABLE_CHECKS )
506
519
. into_iter ( )
507
520
. any ( |directive| matches ! ( directive, Directive :: Ignore ( _) ) ) ;
508
521
let has_alphabetical_directive = line. contains ( "tidy-alphabetical-start" )
0 commit comments