xref: /linux/rust/syn/span.rs (revision 784faa8eca8270671e0ed6d9d21f04bbb80fc5f7)
1*69942c0aSMiguel Ojeda // SPDX-License-Identifier: Apache-2.0 OR MIT
2*69942c0aSMiguel Ojeda 
3808c999fSMiguel Ojeda use proc_macro2::extra::DelimSpan;
4808c999fSMiguel Ojeda use proc_macro2::{Delimiter, Group, Span, TokenStream};
5808c999fSMiguel Ojeda 
6808c999fSMiguel Ojeda #[doc(hidden)]
7808c999fSMiguel Ojeda pub trait IntoSpans<S> {
into_spans(self) -> S8808c999fSMiguel Ojeda     fn into_spans(self) -> S;
9808c999fSMiguel Ojeda }
10808c999fSMiguel Ojeda 
11808c999fSMiguel Ojeda impl IntoSpans<Span> for Span {
into_spans(self) -> Span12808c999fSMiguel Ojeda     fn into_spans(self) -> Span {
13808c999fSMiguel Ojeda         self
14808c999fSMiguel Ojeda     }
15808c999fSMiguel Ojeda }
16808c999fSMiguel Ojeda 
17808c999fSMiguel Ojeda impl IntoSpans<[Span; 1]> for Span {
into_spans(self) -> [Span; 1]18808c999fSMiguel Ojeda     fn into_spans(self) -> [Span; 1] {
19808c999fSMiguel Ojeda         [self]
20808c999fSMiguel Ojeda     }
21808c999fSMiguel Ojeda }
22808c999fSMiguel Ojeda 
23808c999fSMiguel Ojeda impl IntoSpans<[Span; 2]> for Span {
into_spans(self) -> [Span; 2]24808c999fSMiguel Ojeda     fn into_spans(self) -> [Span; 2] {
25808c999fSMiguel Ojeda         [self, self]
26808c999fSMiguel Ojeda     }
27808c999fSMiguel Ojeda }
28808c999fSMiguel Ojeda 
29808c999fSMiguel Ojeda impl IntoSpans<[Span; 3]> for Span {
into_spans(self) -> [Span; 3]30808c999fSMiguel Ojeda     fn into_spans(self) -> [Span; 3] {
31808c999fSMiguel Ojeda         [self, self, self]
32808c999fSMiguel Ojeda     }
33808c999fSMiguel Ojeda }
34808c999fSMiguel Ojeda 
35808c999fSMiguel Ojeda impl IntoSpans<[Span; 1]> for [Span; 1] {
into_spans(self) -> [Span; 1]36808c999fSMiguel Ojeda     fn into_spans(self) -> [Span; 1] {
37808c999fSMiguel Ojeda         self
38808c999fSMiguel Ojeda     }
39808c999fSMiguel Ojeda }
40808c999fSMiguel Ojeda 
41808c999fSMiguel Ojeda impl IntoSpans<[Span; 2]> for [Span; 2] {
into_spans(self) -> [Span; 2]42808c999fSMiguel Ojeda     fn into_spans(self) -> [Span; 2] {
43808c999fSMiguel Ojeda         self
44808c999fSMiguel Ojeda     }
45808c999fSMiguel Ojeda }
46808c999fSMiguel Ojeda 
47808c999fSMiguel Ojeda impl IntoSpans<[Span; 3]> for [Span; 3] {
into_spans(self) -> [Span; 3]48808c999fSMiguel Ojeda     fn into_spans(self) -> [Span; 3] {
49808c999fSMiguel Ojeda         self
50808c999fSMiguel Ojeda     }
51808c999fSMiguel Ojeda }
52808c999fSMiguel Ojeda 
53808c999fSMiguel Ojeda impl IntoSpans<DelimSpan> for Span {
into_spans(self) -> DelimSpan54808c999fSMiguel Ojeda     fn into_spans(self) -> DelimSpan {
55808c999fSMiguel Ojeda         let mut group = Group::new(Delimiter::None, TokenStream::new());
56808c999fSMiguel Ojeda         group.set_span(self);
57808c999fSMiguel Ojeda         group.delim_span()
58808c999fSMiguel Ojeda     }
59808c999fSMiguel Ojeda }
60808c999fSMiguel Ojeda 
61808c999fSMiguel Ojeda impl IntoSpans<DelimSpan> for DelimSpan {
into_spans(self) -> DelimSpan62808c999fSMiguel Ojeda     fn into_spans(self) -> DelimSpan {
63808c999fSMiguel Ojeda         self
64808c999fSMiguel Ojeda     }
65808c999fSMiguel Ojeda }
66