@@ -256,8 +256,6 @@ mod directives {
256256 pub  const  NO_AUTO_CHECK_CFG :  & ' static  str  = "no-auto-check-cfg" ; 
257257 pub  const  ADD_CORE_STUBS :  & ' static  str  = "add-core-stubs" ; 
258258 pub  const  CORE_STUBS_COMPILE_FLAGS :  & ' static  str  = "core-stubs-compile-flags" ; 
259-  // This isn't a real directive, just one that is probably mistyped often 
260-  pub  const  INCORRECT_COMPILER_FLAGS :  & ' static  str  = "compiler-flags" ; 
261259 pub  const  DISABLE_GDB_PRETTY_PRINTERS :  & ' static  str  = "disable-gdb-pretty-printers" ; 
262260 pub  const  COMPARE_OUTPUT_BY_LINES :  & ' static  str  = "compare-output-by-lines" ; 
263261} 
@@ -418,9 +416,6 @@ impl TestProps {
418416 } 
419417 self . compile_flags . extend ( flags) ; 
420418 } 
421-  if  config. parse_name_value_directive ( ln,  INCORRECT_COMPILER_FLAGS ) . is_some ( )  { 
422-  panic ! ( "`compiler-flags` directive should be spelled `compile-flags`" ) ; 
423-  } 
424419
425420 if  let  Some ( range)  = parse_edition_range ( config,  ln)  { 
426421 self . edition  = Some ( range. edition_to_test ( config. edition ) ) ; 
@@ -504,7 +499,7 @@ impl TestProps {
504499 & mut  self . check_test_line_numbers_match , 
505500 ) ; 
506501
507-  self . update_pass_mode ( ln,  test_revision ,   config) ; 
502+  self . update_pass_mode ( ln,  config) ; 
508503 self . update_fail_mode ( ln,  config) ; 
509504
510505 config. set_name_directive ( ln,  IGNORE_PASS ,  & mut  self . ignore_pass ) ; 
@@ -686,9 +681,6 @@ impl TestProps {
686681 panic ! ( "`{}-fail` directive is only supported in UI tests" ,  mode) ; 
687682 } 
688683 } ; 
689-  if  config. mode  == TestMode :: Ui  && config. parse_name_directive ( ln,  "compile-fail" )  { 
690-  panic ! ( "`compile-fail` directive is useless in UI tests" ) ; 
691-  } 
692684 let  fail_mode = if  config. parse_name_directive ( ln,  "check-fail" )  { 
693685 check_ui ( "check" ) ; 
694686 Some ( FailMode :: Check ) 
@@ -714,18 +706,15 @@ impl TestProps {
714706 } 
715707 } 
716708
717-  fn  update_pass_mode ( 
718-  & mut  self , 
719-  ln :  & DirectiveLine < ' _ > , 
720-  revision :  Option < & str > , 
721-  config :  & Config , 
722-  )  { 
709+  fn  update_pass_mode ( & mut  self ,  ln :  & DirectiveLine < ' _ > ,  config :  & Config )  { 
723710 let  check_no_run = |s| match  ( config. mode ,  s)  { 
724711 ( TestMode :: Ui ,  _)  => ( ) , 
725712 ( TestMode :: Crashes ,  _)  => ( ) , 
726713 ( TestMode :: Codegen ,  "build-pass" )  => ( ) , 
727714 ( TestMode :: Incremental ,  _)  => { 
728-  if  revision. is_some ( )  && !self . revisions . iter ( ) . all ( |r| r. starts_with ( "cfail" ) )  { 
715+  // FIXME(Zalathar): This only detects forbidden directives that are 
716+  // declared _after_ the incompatible `//@ revisions:` directive(s). 
717+  if  self . revisions . iter ( ) . any ( |r| !r. starts_with ( "cfail" ) )  { 
729718 panic ! ( "`{s}` directive is only supported in `cfail` incremental tests" ) 
730719 } 
731720 } 
@@ -812,6 +801,11 @@ fn check_directive<'a>(
812801 . map ( |remark| remark. trim_start ( ) . split ( ' ' ) . next ( ) . unwrap ( ) ) 
813802 . filter ( |token| KNOWN_DIRECTIVE_NAMES . contains ( token) ) ; 
814803
804+  // FIXME(Zalathar): Consider emitting specialized error/help messages for 
805+  // bogus directive names that are similar to real ones, e.g.: 
806+  // - *`compiler-flags` => `compile-flags` 
807+  // - *`compile-fail` => `check-fail` or `build-fail` 
808+ 
815809 CheckDirectiveResult  {  is_known_directive,  trailing_directive } 
816810} 
817811
0 commit comments