| // SPDX-License-Identifier: Apache-2.0 OR MIT | |
| use proc_macro2::extra::DelimSpan; | |
| use proc_macro2::{Delimiter, Group, Span, TokenStream}; | |
| #[doc(hidden)] | |
| pub trait IntoSpans<S> { | |
| fn into_spans(self) -> S; | |
| } | |
| impl IntoSpans<Span> for Span { | |
| fn into_spans(self) -> Span { | |
| self | |
| } | |
| } | |
| impl IntoSpans<[Span; 1]> for Span { | |
| fn into_spans(self) -> [Span; 1] { | |
| [self] | |
| } | |
| } | |
| impl IntoSpans<[Span; 2]> for Span { | |
| fn into_spans(self) -> [Span; 2] { | |
| [self, self] | |
| } | |
| } | |
| impl IntoSpans<[Span; 3]> for Span { | |
| fn into_spans(self) -> [Span; 3] { | |
| [self, self, self] | |
| } | |
| } | |
| impl IntoSpans<[Span; 1]> for [Span; 1] { | |
| fn into_spans(self) -> [Span; 1] { | |
| self | |
| } | |
| } | |
| impl IntoSpans<[Span; 2]> for [Span; 2] { | |
| fn into_spans(self) -> [Span; 2] { | |
| self | |
| } | |
| } | |
| impl IntoSpans<[Span; 3]> for [Span; 3] { | |
| fn into_spans(self) -> [Span; 3] { | |
| self | |
| } | |
| } | |
| impl IntoSpans<DelimSpan> for Span { | |
| fn into_spans(self) -> DelimSpan { | |
| let mut group = Group::new(Delimiter::None, TokenStream::new()); | |
| group.set_span(self); | |
| group.delim_span() | |
| } | |
| } | |
| impl IntoSpans<DelimSpan> for DelimSpan { | |
| fn into_spans(self) -> DelimSpan { | |
| self | |
| } | |
| } |