typed-quote 0.1.1

A fully typed quote!() alternative for both proc-macro and proc-macro2
Documentation
use crate::{Never, Span};

use super::*;

impl sealed::MaybeSpan for Never {}
impl MaybeSpan for Never {
    #[cfg(feature = "proc-macro")]
    fn into_span_or_call_site(self) -> proc_macro::Span {
        match self {}
    }
    #[cfg(feature = "proc-macro")]
    fn make_punct(self, _: proc_macro::Punct) -> proc_macro::Punct {
        match self {}
    }
    #[cfg(feature = "proc-macro")]
    fn make_group(self, _: proc_macro::Group) -> proc_macro::Group {
        match self {}
    }
    #[cfg(feature = "proc-macro")]
    fn make_literal(self, _: proc_macro::Literal) -> proc_macro::Literal {
        match self {}
    }

    #[cfg(feature = "proc-macro2")]
    fn into_span2_or_call_site(self) -> proc_macro2::Span {
        match self {}
    }
    #[cfg(feature = "proc-macro2")]
    fn make_punct2(self, _: proc_macro2::Punct) -> proc_macro2::Punct {
        match self {}
    }
    #[cfg(feature = "proc-macro2")]
    fn make_group2(self, _: proc_macro2::Group) -> proc_macro2::Group {
        match self {}
    }
    #[cfg(feature = "proc-macro2")]
    fn make_literal2(self, _: proc_macro2::Literal) -> proc_macro2::Literal {
        match self {}
    }

    type Span = Self;
    fn try_into_span(self) -> Option<Self::Span> {
        match self {}
    }

    type WithDefaultSpan<S: Span> = Self;
    fn with_default_span<S: Span>(self, _: S) -> Self::WithDefaultSpan<S> {
        match self {}
    }

    type WithReplacedSpan<S: Span> = Self;
    fn with_replaced_span<S: Span>(self, _: S) -> Self::WithReplacedSpan<S> {
        match self {}
    }
}

#[cfg(any(feature = "proc-macro", feature = "proc-macro2"))]
impl<T: IntoTokens + WithSpan> crate::replace_span_of::ReplaceSpanOf<T> for Never {
    type ReplaceSpanOf = Never;

    fn replace_span_of(self, _: T) -> Self::ReplaceSpanOf {
        match self {}
    }
}

impl sealed::Span for Never {}
impl Span for Never {}

impl sealed::IntoTokenTree for Never {}
impl IntoTokenTree for Never {
    crate::impl_into_token_tree!(|self| match self {});
}

impl sealed::ToTokenTree for Never {}
impl ToTokenTree for Never {
    crate::impl_to_token_tree!(|self| match *self {});
}

impl sealed::ToTokens for Never {}
impl ToTokens for Never {
    crate::impl_to_tokens!(|self, _| match *self {}, match *self {});
}

impl sealed::IntoTokens for Never {}
impl IntoTokens for Never {
    crate::impl_into_tokens!(|self, _| match self {}, match self {});
}

impl sealed::WithSpan for Never {}
impl WithSpan for Never {
    type WithDefaultSpan<S: Span> = Never;

    fn with_default_span<S: Span>(self, _: S) -> Self::WithDefaultSpan<S> {
        match self {}
    }

    type WithReplacedSpan<S: Span> = Never;

    fn with_replaced_span<S: Span>(self, _: S) -> Self::WithReplacedSpan<S> {
        match self {}
    }
}

impl sealed::RefWithSpan for Never {}
impl RefWithSpan for Never {
    type RefWithDefaultSpan<'a, S: Span>
        = Never
    where
        Self: 'a;

    fn ref_with_default_span<S: Span>(&self, _: S) -> Self::RefWithDefaultSpan<'_, S> {
        match *self {}
    }

    type RefWithReplacedSpan<'a, S: Span>
        = Never
    where
        Self: 'a;

    fn ref_with_replaced_span<S: Span>(&self, _: S) -> Self::RefWithReplacedSpan<'_, S> {
        match *self {}
    }
}