Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-srv/src/server_impl/token_stream.rs')
-rw-r--r--crates/proc-macro-srv/src/server_impl/token_stream.rs29
1 files changed, 14 insertions, 15 deletions
diff --git a/crates/proc-macro-srv/src/server_impl/token_stream.rs b/crates/proc-macro-srv/src/server_impl/token_stream.rs
index 645f7e7c59..4946a4f2a6 100644
--- a/crates/proc-macro-srv/src/server_impl/token_stream.rs
+++ b/crates/proc-macro-srv/src/server_impl/token_stream.rs
@@ -2,13 +2,20 @@
use proc_macro::bridge;
-use crate::server_impl::{delim_to_external, literal_kind_to_external, TopSubtree};
+use crate::server_impl::{TopSubtree, delim_to_external, literal_kind_to_external};
#[derive(Clone)]
pub struct TokenStream<S> {
pub(super) token_trees: Vec<tt::TokenTree<S>>,
}
+// #[derive(Default)] would mean that `S: Default`.
+impl<S> Default for TokenStream<S> {
+ fn default() -> Self {
+ Self { token_trees: Default::default() }
+ }
+}
+
impl<S: std::fmt::Debug + Copy> std::fmt::Debug for TokenStream<S> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("TokenStream")
@@ -17,17 +24,7 @@ impl<S: std::fmt::Debug + Copy> std::fmt::Debug for TokenStream<S> {
}
}
-impl<S> Default for TokenStream<S> {
- fn default() -> Self {
- Self { token_trees: vec![] }
- }
-}
-
impl<S: Copy> TokenStream<S> {
- pub(crate) fn new() -> Self {
- TokenStream::default()
- }
-
pub(crate) fn with_subtree(subtree: TopSubtree<S>) -> Self {
let delimiter_kind = subtree.top_subtree().delimiter.kind;
let mut token_trees = subtree.0;
@@ -145,10 +142,6 @@ pub(super) mod token_stream_impls {
}
impl<S: Copy> TokenStreamBuilder<S> {
- pub(super) fn new() -> TokenStreamBuilder<S> {
- TokenStreamBuilder { acc: TokenStream::new() }
- }
-
pub(super) fn push(&mut self, stream: TokenStream<S>) {
self.acc.token_trees.extend(stream.token_trees)
}
@@ -157,3 +150,9 @@ impl<S: Copy> TokenStreamBuilder<S> {
self.acc
}
}
+
+impl<S: Copy> Default for TokenStreamBuilder<S> {
+ fn default() -> Self {
+ Self { acc: TokenStream::default() }
+ }
+}