Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/tt/src/lib.rs')
-rw-r--r--crates/tt/src/lib.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/crates/tt/src/lib.rs b/crates/tt/src/lib.rs
index a384af2a9a..73e75a051b 100644
--- a/crates/tt/src/lib.rs
+++ b/crates/tt/src/lib.rs
@@ -56,6 +56,7 @@ pub trait SpanAnchor: std::fmt::Debug + Copy + Sized + Eq {
const DUMMY: Self;
}
+// FIXME: Get rid of this trait?
pub trait Span: std::fmt::Debug + Copy + Sized + Eq {
const DUMMY: Self;
}
@@ -72,7 +73,16 @@ pub enum TokenTree<S> {
impl_from!(Leaf<S>, Subtree<S> for TokenTree);
impl<S: Span> TokenTree<S> {
pub const fn empty() -> Self {
- Self::Subtree(Subtree { delimiter: Delimiter::unspecified(), token_trees: vec![] })
+ Self::Subtree(Subtree { delimiter: Delimiter::UNSPECIFIED, token_trees: vec![] })
+ }
+
+ pub fn subtree_or_wrap(self) -> Subtree<S> {
+ match self {
+ TokenTree::Leaf(_) => {
+ Subtree { delimiter: Delimiter::UNSPECIFIED, token_trees: vec![self] }
+ }
+ TokenTree::Subtree(s) => s,
+ }
}
}