Remove PathTokens from public API
diff --git a/src/expr.rs b/src/expr.rs
index 809463a..9440c1c 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -3473,7 +3473,7 @@
impl ToTokens for ExprPath {
fn to_tokens(&self, tokens: &mut TokenStream) {
outer_attrs_to_tokens(&self.attrs, tokens);
- ::PathTokens(&self.qself, &self.path).to_tokens(tokens)
+ private::print_path(tokens, &self.qself, &self.path);
}
}
@@ -3669,7 +3669,7 @@
#[cfg(feature = "full")]
impl ToTokens for PatPath {
fn to_tokens(&self, tokens: &mut TokenStream) {
- ::PathTokens(&self.qself, &self.path).to_tokens(tokens);
+ private::print_path(tokens, &self.qself, &self.path);
}
}
diff --git a/src/lib.rs b/src/lib.rs
index b32d67c..6308b76 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -424,11 +424,6 @@
#[cfg(any(feature = "full", feature = "derive"))]
mod path;
-#[cfg(all(
- any(feature = "full", feature = "derive"),
- feature = "printing"
-))]
-pub use path::PathTokens;
#[cfg(any(feature = "full", feature = "derive"))]
pub use path::{
AngleBracketedGenericArguments, Binding, GenericArgument, ParenthesizedGenericArguments, Path,
diff --git a/src/path.rs b/src/path.rs
index 9b4b9ff..443bac6 100644
--- a/src/path.rs
+++ b/src/path.rs
@@ -20,38 +20,6 @@
}
}
-/// A helper for printing a self-type qualified path as tokens.
-///
-/// ```rust
-/// # extern crate syn;
-/// # extern crate quote;
-/// # extern crate proc_macro2;
-/// #
-/// use proc_macro2::TokenStream;
-/// use quote::ToTokens;
-/// use syn::{QSelf, Path, PathTokens};
-///
-/// struct MyNode {
-/// qself: Option<QSelf>,
-/// path: Path,
-/// }
-///
-/// impl ToTokens for MyNode {
-/// fn to_tokens(&self, tokens: &mut TokenStream) {
-/// PathTokens(&self.qself, &self.path).to_tokens(tokens);
-/// }
-/// }
-/// #
-/// # fn main() {}
-/// ```
-///
-/// *This type is available if Syn is built with the `"derive"` or `"full"`
-/// feature and the `"printing"` feature.*
-#[cfg(feature = "printing")]
-#[cfg_attr(feature = "extra-traits", derive(Debug, Eq, PartialEq, Hash))]
-#[cfg_attr(feature = "clone-impls", derive(Clone))]
-pub struct PathTokens<'a>(pub &'a Option<QSelf>, pub &'a Path);
-
impl<T> From<T> for Path
where
T: Into<PathSegment>,
@@ -609,24 +577,27 @@
}
}
- impl<'a> ToTokens for PathTokens<'a> {
- fn to_tokens(&self, tokens: &mut TokenStream) {
- let qself = match *self.0 {
+ impl private {
+ pub fn print_path(tokens: &mut TokenStream, qself: &Option<QSelf>, path: &Path) {
+ let qself = match *qself {
Some(ref qself) => qself,
- None => return self.1.to_tokens(tokens),
+ None => {
+ path.to_tokens(tokens);
+ return;
+ }
};
qself.lt_token.to_tokens(tokens);
qself.ty.to_tokens(tokens);
- let pos = if qself.position > 0 && qself.position >= self.1.segments.len() {
- self.1.segments.len() - 1
+ let pos = if qself.position > 0 && qself.position >= path.segments.len() {
+ path.segments.len() - 1
} else {
qself.position
};
- let mut segments = self.1.segments.pairs();
+ let mut segments = path.segments.pairs();
if pos > 0 {
TokensOrDefault(&qself.as_token).to_tokens(tokens);
- self.1.leading_colon.to_tokens(tokens);
+ path.leading_colon.to_tokens(tokens);
for (i, segment) in segments.by_ref().take(pos).enumerate() {
if i + 1 == pos {
segment.value().to_tokens(tokens);
@@ -638,7 +609,7 @@
}
} else {
qself.gt_token.to_tokens(tokens);
- self.1.leading_colon.to_tokens(tokens);
+ path.leading_colon.to_tokens(tokens);
}
for segment in segments {
segment.to_tokens(tokens);
diff --git a/src/ty.rs b/src/ty.rs
index 2c0a10e..29f2311 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -839,7 +839,7 @@
impl ToTokens for TypePath {
fn to_tokens(&self, tokens: &mut TokenStream) {
- PathTokens(&self.qself, &self.path).to_tokens(tokens);
+ private::print_path(tokens, &self.qself, &self.path);
}
}