internal: move test

This commit is contained in:
Aleksey Kladov 2021-10-09 18:46:16 +03:00
parent b1cfa51ef5
commit 419c234333
2 changed files with 60 additions and 52 deletions

View File

@ -415,3 +415,63 @@ x![(a b)];
"#]],
)
}
#[test]
fn test_expand_to_item_list() {
check(
r#"
macro_rules! structs {
($($i:ident),*) => { $(struct $i { field: u32 } )* }
}
// +tree
structs!(Foo, Bar);
"#,
expect![[r#"
macro_rules! structs {
($($i:ident),*) => { $(struct $i { field: u32 } )* }
}
struct Foo {
field:u32
}
struct Bar {
field:u32
}
// MACRO_ITEMS@0..40
// STRUCT@0..20
// STRUCT_KW@0..6 "struct"
// NAME@6..9
// IDENT@6..9 "Foo"
// RECORD_FIELD_LIST@9..20
// L_CURLY@9..10 "{"
// RECORD_FIELD@10..19
// NAME@10..15
// IDENT@10..15 "field"
// COLON@15..16 ":"
// PATH_TYPE@16..19
// PATH@16..19
// PATH_SEGMENT@16..19
// NAME_REF@16..19
// IDENT@16..19 "u32"
// R_CURLY@19..20 "}"
// STRUCT@20..40
// STRUCT_KW@20..26 "struct"
// NAME@26..29
// IDENT@26..29 "Bar"
// RECORD_FIELD_LIST@29..40
// L_CURLY@29..30 "{"
// RECORD_FIELD@30..39
// NAME@30..35
// IDENT@30..35 "field"
// COLON@35..36 ":"
// PATH_TYPE@36..39
// PATH@36..39
// PATH_SEGMENT@36..39
// NAME_REF@36..39
// IDENT@36..39 "u32"
// R_CURLY@39..40 "}"
"#]],
);
}

View File

@ -71,58 +71,6 @@ macro_rules! foobar {
assert_eq!(get_text(tt::TokenId(13), T!['{']), "{");
}
#[test]
fn test_expand_to_item_list() {
let tree = parse_macro(
"
macro_rules! structs {
($($i:ident),*) => {
$(struct $i { field: u32 } )*
}
}
",
)
.expand_items("structs!(Foo, Bar);");
assert_eq!(
format!("{:#?}", tree).trim(),
r#"
MACRO_ITEMS@0..40
STRUCT@0..20
STRUCT_KW@0..6 "struct"
NAME@6..9
IDENT@6..9 "Foo"
RECORD_FIELD_LIST@9..20
L_CURLY@9..10 "{"
RECORD_FIELD@10..19
NAME@10..15
IDENT@10..15 "field"
COLON@15..16 ":"
PATH_TYPE@16..19
PATH@16..19
PATH_SEGMENT@16..19
NAME_REF@16..19
IDENT@16..19 "u32"
R_CURLY@19..20 "}"
STRUCT@20..40
STRUCT_KW@20..26 "struct"
NAME@26..29
IDENT@26..29 "Bar"
RECORD_FIELD_LIST@29..40
L_CURLY@29..30 "{"
RECORD_FIELD@30..39
NAME@30..35
IDENT@30..35 "field"
COLON@35..36 ":"
PATH_TYPE@36..39
PATH@36..39
PATH_SEGMENT@36..39
NAME_REF@36..39
IDENT@36..39 "u32"
R_CURLY@39..40 "}""#
.trim()
);
}
fn to_subtree(tt: &tt::TokenTree) -> &tt::Subtree {
if let tt::TokenTree::Subtree(subtree) = tt {
return subtree;