1
+ use ra_parser:: FragmentKind ;
1
2
use ra_syntax:: { ast, AstNode , NodeOrToken , WalkEvent } ;
2
3
use test_utils:: assert_eq_text;
3
4
@@ -126,9 +127,9 @@ fn test_expr_order() {
126
127
"# ,
127
128
) ;
128
129
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 ( ) ;
130
131
131
- let dump = format ! ( "{:#?}" , tree. syntax ( ) ) ;
132
+ let dump = format ! ( "{:#?}" , tree) ;
132
133
assert_eq_text ! (
133
134
dump. trim( ) ,
134
135
r#"MACRO_ITEMS@[0; 15)
@@ -383,9 +384,9 @@ fn test_expand_to_item_list() {
383
384
" ,
384
385
) ;
385
386
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 ( ) ;
387
388
assert_eq ! (
388
- format!( "{:#?}" , tree. syntax ( ) ) . trim( ) ,
389
+ format!( "{:#?}" , tree) . trim( ) ,
389
390
r#"
390
391
MACRO_ITEMS@[0; 40)
391
392
STRUCT_DEF@[0; 20)
@@ -501,10 +502,11 @@ fn test_tt_to_stmts() {
501
502
) ;
502
503
503
504
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 ( ) ;
505
507
506
508
assert_eq ! (
507
- format!( "{:#?}" , stmts. syntax ( ) ) . trim( ) ,
509
+ format!( "{:#?}" , stmts) . trim( ) ,
508
510
r#"MACRO_STMTS@[0; 15)
509
511
LET_STMT@[0; 7)
510
512
LET_KW@[0; 3) "let"
@@ -754,7 +756,10 @@ fn test_all_items() {
754
756
}
755
757
"# ,
756
758
) ;
757
- assert_expansion ( MacroKind :: Items , & rules, r#"
759
+ assert_expansion (
760
+ MacroKind :: Items ,
761
+ & rules,
762
+ r#"
758
763
foo! {
759
764
extern crate a;
760
765
mod b;
@@ -770,7 +775,9 @@ fn test_all_items() {
770
775
extern {}
771
776
type T = u8;
772
777
}
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
+ ) ;
774
781
}
775
782
776
783
#[ test]
@@ -946,10 +953,10 @@ fn test_vec() {
946
953
) ;
947
954
948
955
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 ( ) ;
950
957
951
958
assert_eq ! (
952
- format!( "{:#?}" , tree. syntax ( ) ) . trim( ) ,
959
+ format!( "{:#?}" , tree) . trim( ) ,
953
960
r#"BLOCK_EXPR@[0; 45)
954
961
BLOCK@[0; 45)
955
962
L_CURLY@[0; 1) "{"
@@ -1088,8 +1095,12 @@ macro_rules! generate_pattern_iterators {
1088
1095
"# ,
1089
1096
) ;
1090
1097
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
+ ) ;
1093
1104
}
1094
1105
1095
1106
#[ test]
@@ -1171,8 +1182,12 @@ fn test_impl_nonzero_fmt() {
1171
1182
"# ,
1172
1183
) ;
1173
1184
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
+ ) ;
1176
1191
}
1177
1192
1178
1193
#[ test]
@@ -1189,8 +1204,12 @@ fn test_cfg_if_items() {
1189
1204
"# ,
1190
1205
) ;
1191
1206
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
+ ) ;
1194
1213
}
1195
1214
1196
1215
#[ test]
@@ -1233,10 +1252,13 @@ cfg_if ! {
1233
1252
"# ,
1234
1253
"__cfg_if_items ! {() ; ((target_env = \" msvc\" ) ()) , ((all (target_arch = \" wasm32\" , not (target_os = \" emscripten\" ))) ()) , (() (mod libunwind ; pub use libunwind :: * ;)) ,}" ) ;
1235
1254
1236
- assert_expansion ( MacroKind :: Items , & rules, r#"
1255
+ assert_expansion (
1256
+ MacroKind :: Items ,
1257
+ & rules,
1258
+ r#"
1237
1259
cfg_if ! { @ __apply cfg ( all ( not ( any ( not ( any ( target_os = "solaris" , target_os = "illumos" ) ) ) ) ) ) , }
1238
1260
"# ,
1239
- ""
1261
+ "" ,
1240
1262
) ;
1241
1263
}
1242
1264
@@ -1291,10 +1313,13 @@ macro_rules! RIDL {
1291
1313
}"# ,
1292
1314
) ;
1293
1315
1294
- let expanded = expand ( & rules, r#"
1316
+ let expanded = expand (
1317
+ & rules,
1318
+ r#"
1295
1319
RIDL!{interface ID3D11Asynchronous(ID3D11AsynchronousVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
1296
1320
fn GetDataSize(&mut self) -> UINT
1297
- }}"# ) ;
1321
+ }}"# ,
1322
+ ) ;
1298
1323
assert_eq ! ( expanded. to_string( ) , "impl ID3D11Asynchronous {pub unsafe fn GetDataSize (& mut self) -> UINT {((* self . lpVtbl) .GetDataSize) (self)}}" ) ;
1299
1324
}
1300
1325
@@ -1340,7 +1365,8 @@ quick_error ! (SORT [enum Wrapped # [derive (Debug)]] items [
1340
1365
1341
1366
#[ test]
1342
1367
fn test_empty_repeat_vars_in_empty_repeat_vars ( ) {
1343
- let rules = create_rules ( r#"
1368
+ let rules = create_rules (
1369
+ r#"
1344
1370
macro_rules! delegate_impl {
1345
1371
([$self_type:ident, $self_wrap:ty, $self_map:ident]
1346
1372
pub trait $name:ident $(: $sup:ident)* $(+ $more_sup:ident)* {
@@ -1385,9 +1411,15 @@ macro_rules! delegate_impl {
1385
1411
}
1386
1412
}
1387
1413
}
1388
- "# ) ;
1414
+ "# ,
1415
+ ) ;
1389
1416
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
+ ) ;
1391
1423
}
1392
1424
1393
1425
pub ( crate ) fn create_rules ( macro_definition : & str ) -> MacroRules {
@@ -1436,22 +1468,30 @@ pub(crate) fn assert_expansion(
1436
1468
} ;
1437
1469
let ( expanded_tree, expected_tree) = match kind {
1438
1470
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 ( ) ;
1441
1475
1442
1476
(
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 ( ) ,
1445
1479
)
1446
1480
}
1447
1481
1448
1482
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 ( ) ;
1451
1491
1452
1492
(
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 ( ) ,
1455
1495
)
1456
1496
}
1457
1497
} ;
0 commit comments