Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/mbe/src/tests.rs')
| -rw-r--r-- | crates/mbe/src/tests.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/crates/mbe/src/tests.rs b/crates/mbe/src/tests.rs index 705cf5a2b1..c2a1696b3d 100644 --- a/crates/mbe/src/tests.rs +++ b/crates/mbe/src/tests.rs @@ -228,3 +228,44 @@ fn debug_dump_ignore_spaces(node: &syntax::SyntaxNode) -> String { buf } + +#[test] +fn test_node_to_tt_censor() { + use syntax::ast::{AttrsOwner, ModuleItemOwner}; + + let source = r##" +#[attr0] +#[attr1] +#[attr2] +struct Struct { + field: () +} +"##; + let source_file = ast::SourceFile::parse(&source).ok().unwrap(); + let item = source_file.items().next().unwrap(); + let attr = item.attrs().nth(1).unwrap(); + + let (tt, _) = + syntax_node_to_token_tree_censored(item.syntax(), Some(attr.syntax().text_range())); + expect_test::expect![[r##"# [attr0] # [attr2] struct Struct {field : ()}"##]] + .assert_eq(&tt.to_string()); + + let source = r##" +#[derive(Derive0)] +#[derive(Derive1)] +#[derive(Derive2)] +struct Struct { + field: () +} +"##; + let source_file = ast::SourceFile::parse(&source).ok().unwrap(); + let item = source_file.items().next().unwrap(); + let attr = item.attrs().nth(1).unwrap(); + + let (tt, _) = syntax_node_to_token_tree_censored( + item.syntax(), + Some(attr.syntax().text_range().cover_offset(0.into())), + ); + expect_test::expect![[r##"# [derive (Derive2)] struct Struct {field : ()}"##]] + .assert_eq(&tt.to_string()); +} |