1+ use ra_parser:: FragmentKind ;
12use ra_syntax:: { ast, AstNode , NodeOrToken , WalkEvent } ;
23use test_utils:: assert_eq_text;
34
@@ -126,9 +127,9 @@ fn test_expr_order() {
126127"# ,
127128 ) ;
128129 let expanded = expand ( & rules, "foo! { 1 + 1}" ) ;
129- let tree = token_tree_to_items ( & expanded) . unwrap ( ) . 0 . tree ( ) ;
130+ let tree = token_tree_to_syntax_node ( & expanded, FragmentKind :: Items ) . unwrap ( ) . 0 . syntax_node ( ) ;
130131
131- let dump = format ! ( "{:#?}" , tree. syntax ( ) ) ;
132+ let dump = format ! ( "{:#?}" , tree) ;
132133 assert_eq_text ! (
133134 dump. trim( ) ,
134135 r#"MACRO_ITEMS@[0; 15)
@@ -383,9 +384,9 @@ fn test_expand_to_item_list() {
383384 " ,
384385 ) ;
385386 let expansion = expand ( & rules, "structs!(Foo, Bar);" ) ;
386- let tree = token_tree_to_items ( & expansion) . unwrap ( ) . 0 . tree ( ) ;
387+ let tree = token_tree_to_syntax_node ( & expansion, FragmentKind :: Items ) . unwrap ( ) . 0 . syntax_node ( ) ;
387388 assert_eq ! (
388- format!( "{:#?}" , tree. syntax ( ) ) . trim( ) ,
389+ format!( "{:#?}" , tree) . trim( ) ,
389390 r#"
390391MACRO_ITEMS@[0; 40)
391392 STRUCT_DEF@[0; 20)
@@ -501,10 +502,11 @@ fn test_tt_to_stmts() {
501502 ) ;
502503
503504 let expanded = expand ( & rules, "foo!{}" ) ;
504- let stmts = token_tree_to_macro_stmts ( & expanded) . unwrap ( ) . 0 . tree ( ) ;
505+ let stmts =
506+ token_tree_to_syntax_node ( & expanded, FragmentKind :: Statements ) . unwrap ( ) . 0 . syntax_node ( ) ;
505507
506508 assert_eq ! (
507- format!( "{:#?}" , stmts. syntax ( ) ) . trim( ) ,
509+ format!( "{:#?}" , stmts) . trim( ) ,
508510 r#"MACRO_STMTS@[0; 15)
509511 LET_STMT@[0; 7)
510512 LET_KW@[0; 3) "let"
@@ -754,7 +756,10 @@ fn test_all_items() {
754756 }
755757"# ,
756758 ) ;
757- assert_expansion ( MacroKind :: Items , & rules, r#"
759+ assert_expansion (
760+ MacroKind :: Items ,
761+ & rules,
762+ r#"
758763 foo! {
759764 extern crate a;
760765 mod b;
@@ -770,7 +775,9 @@ fn test_all_items() {
770775 extern {}
771776 type T = u8;
772777 }
773- "# , r#"extern crate a ; mod b ; mod c {} use d ; const E : i32 = 0 ; static F : i32 = 0 ; impl G {} struct H ; enum I {Foo} trait J {} fn h () {} extern {} type T = u8 ;"# ) ;
778+ "# ,
779+ r#"extern crate a ; mod b ; mod c {} use d ; const E : i32 = 0 ; static F : i32 = 0 ; impl G {} struct H ; enum I {Foo} trait J {} fn h () {} extern {} type T = u8 ;"# ,
780+ ) ;
774781}
775782
776783#[ test]
@@ -946,10 +953,10 @@ fn test_vec() {
946953 ) ;
947954
948955 let expansion = expand ( & rules, r#"vec![1u32,2];"# ) ;
949- let tree = token_tree_to_expr ( & expansion) . unwrap ( ) . 0 . tree ( ) ;
956+ let tree = token_tree_to_syntax_node ( & expansion, FragmentKind :: Expr ) . unwrap ( ) . 0 . syntax_node ( ) ;
950957
951958 assert_eq ! (
952- format!( "{:#?}" , tree. syntax ( ) ) . trim( ) ,
959+ format!( "{:#?}" , tree) . trim( ) ,
953960 r#"BLOCK_EXPR@[0; 45)
954961 BLOCK@[0; 45)
955962 L_CURLY@[0; 1) "{"
@@ -1088,8 +1095,12 @@ macro_rules! generate_pattern_iterators {
10881095"# ,
10891096 ) ;
10901097
1091- assert_expansion ( MacroKind :: Items , & rules, r#"generate_pattern_iterators ! ( double ended ; with # [ stable ( feature = "rust1" , since = "1.0.0" ) ] , Split , RSplit , & 'a str );"# ,
1092- "fn foo () {}" ) ;
1098+ assert_expansion (
1099+ MacroKind :: Items ,
1100+ & rules,
1101+ r#"generate_pattern_iterators ! ( double ended ; with # [ stable ( feature = "rust1" , since = "1.0.0" ) ] , Split , RSplit , & 'a str );"# ,
1102+ "fn foo () {}" ,
1103+ ) ;
10931104}
10941105
10951106#[ test]
@@ -1171,8 +1182,12 @@ fn test_impl_nonzero_fmt() {
11711182"# ,
11721183 ) ;
11731184
1174- assert_expansion ( MacroKind :: Items , & rules, r#"impl_nonzero_fmt! { # [stable(feature= "nonzero",since="1.28.0")] (Debug,Display,Binary,Octal,LowerHex,UpperHex) for NonZeroU8}"# ,
1175- "fn foo () {}" ) ;
1185+ assert_expansion (
1186+ MacroKind :: Items ,
1187+ & rules,
1188+ r#"impl_nonzero_fmt! { # [stable(feature= "nonzero",since="1.28.0")] (Debug,Display,Binary,Octal,LowerHex,UpperHex) for NonZeroU8}"# ,
1189+ "fn foo () {}" ,
1190+ ) ;
11761191}
11771192
11781193#[ test]
@@ -1189,8 +1204,12 @@ fn test_cfg_if_items() {
11891204"# ,
11901205 ) ;
11911206
1192- assert_expansion ( MacroKind :: Items , & rules, r#"__cfg_if_items ! { ( rustdoc , ) ; ( ( ) ( # [ cfg ( any ( target_os = "redox" , unix ) ) ] # [ stable ( feature = "rust1" , since = "1.0.0" ) ] pub use sys :: ext as unix ; # [ cfg ( windows ) ] # [ stable ( feature = "rust1" , since = "1.0.0" ) ] pub use sys :: ext as windows ; # [ cfg ( any ( target_os = "linux" , target_os = "l4re" ) ) ] pub mod linux ; ) ) , }"# ,
1193- "__cfg_if_items ! {(rustdoc ,) ;}" ) ;
1207+ assert_expansion (
1208+ MacroKind :: Items ,
1209+ & rules,
1210+ r#"__cfg_if_items ! { ( rustdoc , ) ; ( ( ) ( # [ cfg ( any ( target_os = "redox" , unix ) ) ] # [ stable ( feature = "rust1" , since = "1.0.0" ) ] pub use sys :: ext as unix ; # [ cfg ( windows ) ] # [ stable ( feature = "rust1" , since = "1.0.0" ) ] pub use sys :: ext as windows ; # [ cfg ( any ( target_os = "linux" , target_os = "l4re" ) ) ] pub mod linux ; ) ) , }"# ,
1211+ "__cfg_if_items ! {(rustdoc ,) ;}" ,
1212+ ) ;
11941213}
11951214
11961215#[ test]
@@ -1233,10 +1252,13 @@ cfg_if ! {
12331252"# ,
12341253 "__cfg_if_items ! {() ; ((target_env = \" msvc\" ) ()) , ((all (target_arch = \" wasm32\" , not (target_os = \" emscripten\" ))) ()) , (() (mod libunwind ; pub use libunwind :: * ;)) ,}" ) ;
12351254
1236- assert_expansion ( MacroKind :: Items , & rules, r#"
1255+ assert_expansion (
1256+ MacroKind :: Items ,
1257+ & rules,
1258+ r#"
12371259cfg_if ! { @ __apply cfg ( all ( not ( any ( not ( any ( target_os = "solaris" , target_os = "illumos" ) ) ) ) ) ) , }
12381260"# ,
1239- ""
1261+ "" ,
12401262 ) ;
12411263}
12421264
@@ -1291,10 +1313,13 @@ macro_rules! RIDL {
12911313}"# ,
12921314 ) ;
12931315
1294- let expanded = expand ( & rules, r#"
1316+ let expanded = expand (
1317+ & rules,
1318+ r#"
12951319RIDL!{interface ID3D11Asynchronous(ID3D11AsynchronousVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
12961320 fn GetDataSize(&mut self) -> UINT
1297- }}"# ) ;
1321+ }}"# ,
1322+ ) ;
12981323 assert_eq ! ( expanded. to_string( ) , "impl ID3D11Asynchronous {pub unsafe fn GetDataSize (& mut self) -> UINT {((* self . lpVtbl) .GetDataSize) (self)}}" ) ;
12991324}
13001325
@@ -1340,7 +1365,8 @@ quick_error ! (SORT [enum Wrapped # [derive (Debug)]] items [
13401365
13411366#[ test]
13421367fn test_empty_repeat_vars_in_empty_repeat_vars ( ) {
1343- let rules = create_rules ( r#"
1368+ let rules = create_rules (
1369+ r#"
13441370macro_rules! delegate_impl {
13451371 ([$self_type:ident, $self_wrap:ty, $self_map:ident]
13461372 pub trait $name:ident $(: $sup:ident)* $(+ $more_sup:ident)* {
@@ -1385,9 +1411,15 @@ macro_rules! delegate_impl {
13851411 }
13861412 }
13871413}
1388- "# ) ;
1414+ "# ,
1415+ ) ;
13891416
1390- assert_expansion ( MacroKind :: Items , & rules, r#"delegate_impl ! {[G , & 'a mut G , deref] pub trait Data : GraphBase {@ section type type NodeWeight ;}}"# , "impl <> Data for & \' a mut G where G : Data {}" ) ;
1417+ assert_expansion (
1418+ MacroKind :: Items ,
1419+ & rules,
1420+ r#"delegate_impl ! {[G , & 'a mut G , deref] pub trait Data : GraphBase {@ section type type NodeWeight ;}}"# ,
1421+ "impl <> Data for & \' a mut G where G : Data {}" ,
1422+ ) ;
13911423}
13921424
13931425pub ( crate ) fn create_rules ( macro_definition : & str ) -> MacroRules {
@@ -1436,22 +1468,30 @@ pub(crate) fn assert_expansion(
14361468 } ;
14371469 let ( expanded_tree, expected_tree) = match kind {
14381470 MacroKind :: Items => {
1439- let expanded_tree = token_tree_to_items ( & expanded) . unwrap ( ) . 0 . tree ( ) ;
1440- let expected_tree = token_tree_to_items ( & expected) . unwrap ( ) . 0 . tree ( ) ;
1471+ let expanded_tree =
1472+ token_tree_to_syntax_node ( & expanded, FragmentKind :: Items ) . unwrap ( ) . 0 . syntax_node ( ) ;
1473+ let expected_tree =
1474+ token_tree_to_syntax_node ( & expected, FragmentKind :: Items ) . unwrap ( ) . 0 . syntax_node ( ) ;
14411475
14421476 (
1443- debug_dump_ignore_spaces ( expanded_tree. syntax ( ) ) . trim ( ) . to_string ( ) ,
1444- debug_dump_ignore_spaces ( expected_tree. syntax ( ) ) . trim ( ) . to_string ( ) ,
1477+ debug_dump_ignore_spaces ( & expanded_tree) . trim ( ) . to_string ( ) ,
1478+ debug_dump_ignore_spaces ( & expected_tree) . trim ( ) . to_string ( ) ,
14451479 )
14461480 }
14471481
14481482 MacroKind :: Stmts => {
1449- let expanded_tree = token_tree_to_macro_stmts ( & expanded) . unwrap ( ) . 0 . tree ( ) ;
1450- let expected_tree = token_tree_to_macro_stmts ( & expected) . unwrap ( ) . 0 . tree ( ) ;
1483+ let expanded_tree = token_tree_to_syntax_node ( & expanded, FragmentKind :: Statements )
1484+ . unwrap ( )
1485+ . 0
1486+ . syntax_node ( ) ;
1487+ let expected_tree = token_tree_to_syntax_node ( & expected, FragmentKind :: Statements )
1488+ . unwrap ( )
1489+ . 0
1490+ . syntax_node ( ) ;
14511491
14521492 (
1453- debug_dump_ignore_spaces ( expanded_tree. syntax ( ) ) . trim ( ) . to_string ( ) ,
1454- debug_dump_ignore_spaces ( expected_tree. syntax ( ) ) . trim ( ) . to_string ( ) ,
1493+ debug_dump_ignore_spaces ( & expanded_tree) . trim ( ) . to_string ( ) ,
1494+ debug_dump_ignore_spaces ( & expected_tree) . trim ( ) . to_string ( ) ,
14551495 )
14561496 }
14571497 } ;
0 commit comments