Some special cases for parse_quote
diff --git a/src/lib.rs b/src/lib.rs
index 98aea1d..b974dc4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -385,6 +385,11 @@
#[cfg(any(feature = "full", feature = "derive"))]
mod tt;
+// Not public API except the `parse_quote!` macro.
+#[cfg(all(feature = "parsing", feature = "printing"))]
+#[doc(hidden)]
+pub mod parse_quote;
+
#[cfg(all(feature = "parsing", feature = "printing"))]
pub mod spanned;
@@ -696,83 +701,6 @@
Ok(file)
}
-/// Quasi-quotation macro that accepts input like the [`quote!`] macro but uses
-/// type inference to figure out a return type for those tokens.
-///
-/// [`quote!`]: https://docs.rs/quote/0.4/quote/index.html
-///
-/// The return type can be any syntax tree node that implements the [`Synom`]
-/// trait.
-///
-/// [`Synom`]: synom/trait.Synom.html
-///
-/// ```
-/// #[macro_use]
-/// extern crate syn;
-///
-/// #[macro_use]
-/// extern crate quote;
-///
-/// use syn::Stmt;
-///
-/// fn main() {
-/// let name = quote!(v);
-/// let ty = quote!(u8);
-///
-/// let stmt: Stmt = parse_quote! {
-/// let #name: #ty = Default::default();
-/// };
-///
-/// println!("{:#?}", stmt);
-/// }
-/// ```
-///
-/// *This macro is available if Syn is built with both the `"parsing"` and
-/// `"printing"` features.*
-///
-/// # Example
-///
-/// The following helper function adds a bound `T: HeapSize` to every type
-/// parameter `T` in the input generics.
-///
-/// ```
-/// # #[macro_use]
-/// # extern crate syn;
-/// #
-/// # #[macro_use]
-/// # extern crate quote;
-/// #
-/// # use syn::{Generics, GenericParam};
-/// #
-/// // Add a bound `T: HeapSize` to every type parameter T.
-/// fn add_trait_bounds(mut generics: Generics) -> Generics {
-/// for param in &mut generics.params {
-/// if let GenericParam::Type(ref mut type_param) = *param {
-/// type_param.bounds.push(parse_quote!(HeapSize));
-/// }
-/// }
-/// generics
-/// }
-/// #
-/// # fn main() {}
-/// ```
-///
-/// # Panics
-///
-/// Panics if the tokens fail to parse as the expected syntax tree type. The
-/// caller is responsible for ensuring that the input tokens are syntactically
-/// valid.
-#[cfg(all(feature = "parsing", feature = "printing"))]
-#[macro_export]
-macro_rules! parse_quote {
- ($($tt:tt)*) => {
- ::std::result::Result::unwrap(
- $crate::parse2(
- ::std::convert::Into::into(
- quote!($($tt)*))))
- };
-}
-
#[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))]
struct TokensOrDefault<'a, T: 'a>(&'a Option<T>);