@@ -37,6 +37,7 @@ use std::fmt::{self, Write};
37
37
use std:: borrow:: Cow ;
38
38
use std:: ops:: Range ;
39
39
use std:: str;
40
+ use syntax:: edition:: Edition ;
40
41
41
42
use html:: toc:: TocBuilder ;
42
43
use html:: highlight;
@@ -577,6 +578,7 @@ pub struct LangString {
577
578
pub compile_fail : bool ,
578
579
pub error_codes : Vec < String > ,
579
580
pub allow_fail : bool ,
581
+ pub edition : Option < Edition >
580
582
}
581
583
582
584
impl LangString {
@@ -591,6 +593,7 @@ impl LangString {
591
593
compile_fail : false ,
592
594
error_codes : Vec :: new ( ) ,
593
595
allow_fail : false ,
596
+ edition : None ,
594
597
}
595
598
}
596
599
@@ -625,6 +628,11 @@ impl LangString {
625
628
seen_rust_tags = !seen_other_tags || seen_rust_tags;
626
629
data. no_run = true ;
627
630
}
631
+ x if allow_error_code_check && x. starts_with ( "edition" ) => {
632
+ // allow_error_code_check is true if we're on nightly, which
633
+ // is needed for edition support
634
+ data. edition = x[ 7 ..] . parse :: < Edition > ( ) . ok ( ) ;
635
+ }
628
636
x if allow_error_code_check && x. starts_with ( "E" ) && x. len ( ) == 5 => {
629
637
if x[ 1 ..] . parse :: < u32 > ( ) . is_ok ( ) {
630
638
data. error_codes . push ( x. to_owned ( ) ) ;
@@ -925,12 +933,14 @@ mod tests {
925
933
use super :: { ErrorCodes , LangString , Markdown , MarkdownHtml , IdMap } ;
926
934
use super :: plain_summary_line;
927
935
use std:: cell:: RefCell ;
936
+ use syntax:: edition:: Edition ;
928
937
929
938
#[ test]
930
939
fn test_lang_string_parse ( ) {
931
940
fn t ( s : & str ,
932
941
should_panic : bool , no_run : bool , ignore : bool , rust : bool , test_harness : bool ,
933
- compile_fail : bool , allow_fail : bool , error_codes : Vec < String > ) {
942
+ compile_fail : bool , allow_fail : bool , error_codes : Vec < String > ,
943
+ edition : Option < Edition > ) {
934
944
assert_eq ! ( LangString :: parse( s, ErrorCodes :: Yes ) , LangString {
935
945
should_panic,
936
946
no_run,
@@ -941,30 +951,34 @@ mod tests {
941
951
error_codes,
942
952
original: s. to_owned( ) ,
943
953
allow_fail,
954
+ edition,
944
955
} )
945
956
}
946
957
947
958
fn v ( ) -> Vec < String > {
948
959
Vec :: new ( )
949
960
}
950
961
951
- // marker | should_panic| no_run| ignore| rust | test_harness| compile_fail
952
- // | allow_fail | error_codes
953
- t ( "" , false , false , false , true , false , false , false , v ( ) ) ;
954
- t ( "rust" , false , false , false , true , false , false , false , v ( ) ) ;
955
- t ( "sh" , false , false , false , false , false , false , false , v ( ) ) ;
956
- t ( "ignore" , false , false , true , true , false , false , false , v ( ) ) ;
957
- t ( "should_panic" , true , false , false , true , false , false , false , v ( ) ) ;
958
- t ( "no_run" , false , true , false , true , false , false , false , v ( ) ) ;
959
- t ( "test_harness" , false , false , false , true , true , false , false , v ( ) ) ;
960
- t ( "compile_fail" , false , true , false , true , false , true , false , v ( ) ) ;
961
- t ( "allow_fail" , false , false , false , true , false , false , true , v ( ) ) ;
962
- t ( "{.no_run .example}" , false , true , false , true , false , false , false , v ( ) ) ;
963
- t ( "{.sh .should_panic}" , true , false , false , false , false , false , false , v ( ) ) ;
964
- t ( "{.example .rust}" , false , false , false , true , false , false , false , v ( ) ) ;
965
- t ( "{.test_harness .rust}" , false , false , false , true , true , false , false , v ( ) ) ;
966
- t ( "text, no_run" , false , true , false , false , false , false , false , v ( ) ) ;
967
- t ( "text,no_run" , false , true , false , false , false , false , false , v ( ) ) ;
962
+ // ignore-tidy-linelength
963
+ // marker | should_panic | no_run | ignore | rust | test_harness
964
+ // | compile_fail | allow_fail | error_codes | edition
965
+ t ( "" , false , false , false , true , false , false , false , v ( ) , None ) ;
966
+ t ( "rust" , false , false , false , true , false , false , false , v ( ) , None ) ;
967
+ t ( "sh" , false , false , false , false , false , false , false , v ( ) , None ) ;
968
+ t ( "ignore" , false , false , true , true , false , false , false , v ( ) , None ) ;
969
+ t ( "should_panic" , true , false , false , true , false , false , false , v ( ) , None ) ;
970
+ t ( "no_run" , false , true , false , true , false , false , false , v ( ) , None ) ;
971
+ t ( "test_harness" , false , false , false , true , true , false , false , v ( ) , None ) ;
972
+ t ( "compile_fail" , false , true , false , true , false , true , false , v ( ) , None ) ;
973
+ t ( "allow_fail" , false , false , false , true , false , false , true , v ( ) , None ) ;
974
+ t ( "{.no_run .example}" , false , true , false , true , false , false , false , v ( ) , None ) ;
975
+ t ( "{.sh .should_panic}" , true , false , false , false , false , false , false , v ( ) , None ) ;
976
+ t ( "{.example .rust}" , false , false , false , true , false , false , false , v ( ) , None ) ;
977
+ t ( "{.test_harness .rust}" , false , false , false , true , true , false , false , v ( ) , None ) ;
978
+ t ( "text, no_run" , false , true , false , false , false , false , false , v ( ) , None ) ;
979
+ t ( "text,no_run" , false , true , false , false , false , false , false , v ( ) , None ) ;
980
+ t ( "edition2015" , false , false , false , true , false , false , false , v ( ) , Some ( Edition :: Edition2015 ) ) ;
981
+ t ( "edition2018" , false , false , false , true , false , false , false , v ( ) , Some ( Edition :: Edition2018 ) ) ;
968
982
}
969
983
970
984
#[ test]
0 commit comments