Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/mbe/src/expander.rs')
-rw-r--r--crates/mbe/src/expander.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/crates/mbe/src/expander.rs b/crates/mbe/src/expander.rs
index 6510fefcb6..274b779c1b 100644
--- a/crates/mbe/src/expander.rs
+++ b/crates/mbe/src/expander.rs
@@ -128,7 +128,10 @@ enum Fragment<'a> {
#[default]
Empty,
/// token fragments are just copy-pasted into the output
- Tokens(tt::TokenTreesView<'a, Span>),
+ Tokens {
+ tree: tt::TokenTreesView<'a, Span>,
+ origin: TokensOrigin,
+ },
/// Expr ast fragments are surrounded with `()` on transcription to preserve precedence.
/// Note that this impl is different from the one currently in `rustc` --
/// `rustc` doesn't translate fragments into token trees at all.
@@ -156,10 +159,16 @@ impl Fragment<'_> {
fn is_empty(&self) -> bool {
match self {
Fragment::Empty => true,
- Fragment::Tokens(it) => it.len() == 0,
+ Fragment::Tokens { tree, .. } => tree.len() == 0,
Fragment::Expr(it) => it.len() == 0,
Fragment::Path(it) => it.len() == 0,
Fragment::TokensOwned(it) => it.0.is_empty(),
}
}
}
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+enum TokensOrigin {
+ Raw,
+ Ast,
+}