@@ -39,6 +39,7 @@ const RUFF_CONFIG_PATH: &[&str] = &["src", "tools", "tidy", "config", "ruff.toml
39
39
const RUFF_CACHE_PATH : & [ & str ] = & [ "cache" , "ruff_cache" ] ;
40
40
const PIP_REQ_PATH : & [ & str ] = & [ "src" , "tools" , "tidy" , "config" , "requirements.txt" ] ;
41
41
42
+ // this must be kept in sync with with .github/workflows/spellcheck.yml
42
43
const SPELLCHECK_DIRS : & [ & str ] = & [ "compiler" , "library" , "src/bootstrap" , "src/librustdoc" ] ;
43
44
44
45
pub fn check (
@@ -87,6 +88,7 @@ fn check_impl(
87
88
}
88
89
}
89
90
Err ( err) => {
91
+ // only warn because before bad extra checks would be silently ignored.
90
92
eprintln ! ( "warning: bad extra check argument {src:?}: {err:?}" ) ;
91
93
None
92
94
}
@@ -260,7 +262,6 @@ fn check_impl(
260
262
261
263
if spellcheck {
262
264
let config_path = root_path. join ( "typos.toml" ) ;
263
- // sync target files with .github/workflows/spellcheck.yml
264
265
let mut args = vec ! [ "-c" , config_path. as_os_str( ) . to_str( ) . unwrap( ) ] ;
265
266
266
267
args. extend_from_slice ( SPELLCHECK_DIRS ) ;
@@ -666,6 +667,7 @@ enum ExtraCheckParseError {
666
667
UnknownKind ( String ) ,
667
668
#[ allow( dead_code) ]
668
669
UnknownLang ( String ) ,
670
+ UnsupportedKindForLang ,
669
671
/// Too many `:`
670
672
TooManyParts ,
671
673
/// Tried to parse the empty string
@@ -703,6 +705,21 @@ impl ExtraCheckArg {
703
705
} ;
704
706
!crate :: files_modified ( ci_info, |s| s. ends_with ( ext) )
705
707
}
708
+
709
+ fn has_supported_kind ( & self ) -> bool {
710
+ let Some ( kind) = self . kind else {
711
+ // "run all extra checks" mode is supported for all languages.
712
+ return true ;
713
+ } ;
714
+ use ExtraCheckKind :: * ;
715
+ let supported_kinds: & [ _ ] = match self . lang {
716
+ ExtraCheckLang :: Py => & [ Fmt , Lint ] ,
717
+ ExtraCheckLang :: Cpp => & [ Fmt ] ,
718
+ ExtraCheckLang :: Shell => & [ Lint ] ,
719
+ ExtraCheckLang :: Spellcheck => & [ ] ,
720
+ } ;
721
+ supported_kinds. contains ( & kind)
722
+ }
706
723
}
707
724
708
725
impl FromStr for ExtraCheckArg {
@@ -725,7 +742,12 @@ impl FromStr for ExtraCheckArg {
725
742
if parts. next ( ) . is_some ( ) {
726
743
return Err ( ExtraCheckParseError :: TooManyParts ) ;
727
744
}
728
- Ok ( Self { auto, lang : first. parse ( ) ?, kind : second. map ( |s| s. parse ( ) ) . transpose ( ) ? } )
745
+ let arg = Self { auto, lang : first. parse ( ) ?, kind : second. map ( |s| s. parse ( ) ) . transpose ( ) ? } ;
746
+ if !arg. has_supported_kind ( ) {
747
+ return Err ( ExtraCheckParseError :: UnsupportedKindForLang ) ;
748
+ }
749
+
750
+ Ok ( arg)
729
751
}
730
752
}
731
753
0 commit comments