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.rs29
1 files changed, 19 insertions, 10 deletions
diff --git a/crates/mbe/src/tests.rs b/crates/mbe/src/tests.rs
index 0b80c8f3ae..e6ac9754da 100644
--- a/crates/mbe/src/tests.rs
+++ b/crates/mbe/src/tests.rs
@@ -1,7 +1,7 @@
mod expand;
mod rule;
-use std::fmt::Write;
+use std::{fmt::Write, iter};
use syntax::{ast, AstNode, NodeOrToken, SyntaxNode, WalkEvent};
use test_utils::assert_eq_text;
@@ -252,27 +252,36 @@ struct Struct {
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()));
+ let (tt, _) = syntax_node_to_token_tree_censored(
+ item.syntax(),
+ &iter::once(attr.syntax().clone()).collect(),
+ );
expect_test::expect![[r##"# [attr0] # [attr2] struct Struct {field : ()}"##]]
.assert_eq(&tt.to_string());
let source = r##"
+#[attr0]
#[derive(Derive0)]
+#[attr1]
#[derive(Derive1)]
+#[attr2]
#[derive(Derive2)]
+#[attr3]
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 : ()}"##]]
+ let derive_attr_index = 3;
+ let censor = item
+ .attrs()
+ .take(derive_attr_index as usize + 1)
+ .filter(|attr| attr.simple_name().as_deref() == Some("derive"))
+ .map(|it| it.syntax().clone())
+ .collect();
+
+ let (tt, _) = syntax_node_to_token_tree_censored(item.syntax(), &censor);
+ expect_test::expect![[r##"# [attr0] # [attr1] # [attr2] # [derive (Derive2)] # [attr3] struct Struct {field : ()}"##]]
.assert_eq(&tt.to_string());
}