1- use rustc_ast:: ast:: LitIntType ;
2- use rustc_ast:: { MetaItemInner , MetaItemLit , Path , Safety , StrStyle } ;
31use rustc_data_structures:: thin_vec:: thin_vec;
42use rustc_hir:: attrs:: CfgEntry ;
5- use rustc_span:: symbol:: { Ident , kw} ;
63use rustc_span:: { DUMMY_SP , create_default_session_globals_then} ;
74
85use super :: * ;
@@ -28,10 +25,6 @@ fn name_value_cfg_e(name: &str, value: &str) -> CfgEntry {
2825 }
2926}
3027
31- fn dummy_lit ( symbol : Symbol , kind : LitKind ) -> MetaItemInner {
32- MetaItemInner :: Lit ( MetaItemLit { symbol, suffix : None , kind, span : DUMMY_SP } )
33- }
34-
3528fn cfg_all ( v : ThinVec < CfgEntry > ) -> Cfg {
3629 Cfg ( cfg_all_e ( v) )
3730}
@@ -52,51 +45,6 @@ fn cfg_not(v: CfgEntry) -> Cfg {
5245 Cfg ( CfgEntry :: Not ( Box :: new ( v) , DUMMY_SP ) )
5346}
5447
55- fn dummy_meta_item_word ( name : & str ) -> MetaItemInner {
56- MetaItemInner :: MetaItem ( MetaItem {
57- unsafety : Safety :: Default ,
58- path : Path :: from_ident ( Ident :: from_str ( name) ) ,
59- kind : MetaItemKind :: Word ,
60- span : DUMMY_SP ,
61- } )
62- }
63-
64- fn dummy_meta_item_name_value ( name : & str , symbol : Symbol , kind : LitKind ) -> MetaItemInner {
65- let lit = MetaItemLit { symbol, suffix : None , kind, span : DUMMY_SP } ;
66- MetaItemInner :: MetaItem ( MetaItem {
67- unsafety : Safety :: Default ,
68- path : Path :: from_ident ( Ident :: from_str ( name) ) ,
69- kind : MetaItemKind :: NameValue ( lit) ,
70- span : DUMMY_SP ,
71- } )
72- }
73-
74- macro_rules! dummy_meta_item_list {
75- ( $name: ident, [ $( $list: ident) ,* $( , ) ?] ) => {
76- MetaItemInner :: MetaItem ( MetaItem {
77- unsafety: Safety :: Default ,
78- path: Path :: from_ident( Ident :: from_str( stringify!( $name) ) ) ,
79- kind: MetaItemKind :: List ( thin_vec![
80- $(
81- dummy_meta_item_word( stringify!( $list) ) ,
82- ) *
83- ] ) ,
84- span: DUMMY_SP ,
85- } )
86- } ;
87-
88- ( $name: ident, [ $( $list: expr) ,* $( , ) ?] ) => {
89- MetaItemInner :: MetaItem ( MetaItem {
90- unsafety: Safety :: Default ,
91- path: Path :: from_ident( Ident :: from_str( stringify!( $name) ) ) ,
92- kind: MetaItemKind :: List ( thin_vec![
93- $( $list, ) *
94- ] ) ,
95- span: DUMMY_SP ,
96- } )
97- } ;
98- }
99-
10048fn cfg_true ( ) -> Cfg {
10149 Cfg ( CfgEntry :: Bool ( true , DUMMY_SP ) )
10250}
@@ -303,87 +251,6 @@ fn test_cfg_or() {
303251 } )
304252}
305253
306- #[ test]
307- fn test_parse_ok ( ) {
308- create_default_session_globals_then ( || {
309- let r#true = Symbol :: intern ( "true" ) ;
310- let mi = dummy_lit ( r#true, LitKind :: Bool ( true ) ) ;
311- assert_eq ! ( Cfg :: parse( & mi) , Ok ( cfg_true( ) ) ) ;
312-
313- let r#false = Symbol :: intern ( "false" ) ;
314- let mi = dummy_lit ( r#false, LitKind :: Bool ( false ) ) ;
315- assert_eq ! ( Cfg :: parse( & mi) , Ok ( cfg_false( ) ) ) ;
316-
317- let mi = dummy_meta_item_word ( "all" ) ;
318- assert_eq ! ( Cfg :: parse( & mi) , Ok ( word_cfg( "all" ) ) ) ;
319-
320- let done = Symbol :: intern ( "done" ) ;
321- let mi = dummy_meta_item_name_value ( "all" , done, LitKind :: Str ( done, StrStyle :: Cooked ) ) ;
322- assert_eq ! ( Cfg :: parse( & mi) , Ok ( name_value_cfg( "all" , "done" ) ) ) ;
323-
324- let mi = dummy_meta_item_list ! ( all, [ a, b] ) ;
325- assert_eq ! ( Cfg :: parse( & mi) , Ok ( word_cfg( "a" ) & word_cfg( "b" ) ) ) ;
326-
327- let mi = dummy_meta_item_list ! ( any, [ a, b] ) ;
328- assert_eq ! ( Cfg :: parse( & mi) , Ok ( word_cfg( "a" ) | word_cfg( "b" ) ) ) ;
329-
330- let mi = dummy_meta_item_list ! ( not, [ a] ) ;
331- assert_eq ! ( Cfg :: parse( & mi) , Ok ( !word_cfg( "a" ) ) ) ;
332-
333- let mi = dummy_meta_item_list ! (
334- not,
335- [ dummy_meta_item_list!(
336- any,
337- [ dummy_meta_item_word( "a" ) , dummy_meta_item_list!( all, [ b, c] ) , ]
338- ) , ]
339- ) ;
340- assert_eq ! ( Cfg :: parse( & mi) , Ok ( !( word_cfg( "a" ) | ( word_cfg( "b" ) & word_cfg( "c" ) ) ) ) ) ;
341-
342- let mi = dummy_meta_item_list ! ( all, [ a, b, c] ) ;
343- assert_eq ! ( Cfg :: parse( & mi) , Ok ( word_cfg( "a" ) & word_cfg( "b" ) & word_cfg( "c" ) ) ) ;
344- } )
345- }
346-
347- #[ test]
348- fn test_parse_err ( ) {
349- create_default_session_globals_then ( || {
350- let mi = dummy_meta_item_name_value ( "foo" , kw:: False , LitKind :: Bool ( false ) ) ;
351- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
352-
353- let mi = dummy_meta_item_list ! ( not, [ a, b] ) ;
354- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
355-
356- let mi = dummy_meta_item_list ! ( not, [ ] ) ;
357- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
358-
359- let mi = dummy_meta_item_list ! ( foo, [ ] ) ;
360- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
361-
362- let mi = dummy_meta_item_list ! (
363- all,
364- [ dummy_meta_item_list!( foo, [ ] ) , dummy_meta_item_word( "b" ) , ]
365- ) ;
366- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
367-
368- let mi = dummy_meta_item_list ! (
369- any,
370- [ dummy_meta_item_word( "a" ) , dummy_meta_item_list!( foo, [ ] ) , ]
371- ) ;
372- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
373-
374- let mi = dummy_meta_item_list ! ( not, [ dummy_meta_item_list!( foo, [ ] ) , ] ) ;
375- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
376-
377- let c = Symbol :: intern ( "e" ) ;
378- let mi = dummy_lit ( c, LitKind :: Char ( 'e' ) ) ;
379- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
380-
381- let five = Symbol :: intern ( "5" ) ;
382- let mi = dummy_lit ( five, LitKind :: Int ( 5 . into ( ) , LitIntType :: Unsuffixed ) ) ;
383- assert ! ( Cfg :: parse( & mi) . is_err( ) ) ;
384- } )
385- }
386-
387254#[ test]
388255fn test_render_short_html ( ) {
389256 create_default_session_globals_then ( || {
0 commit comments