Skip to content

Commit cba9415

Browse files
committed
WIP
1 parent d51b6f9 commit cba9415

File tree

1 file changed

+85
-6
lines changed

1 file changed

+85
-6
lines changed

library/proc_macro/src/quote.rs

Lines changed: 85 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,15 +189,17 @@ macro_rules! minimal_quote_tt {
189189
(,) => { Punct::new(',', Spacing::Alone) };
190190
(.) => { Punct::new('.', Spacing::Alone) };
191191
(;) => { Punct::new(';', Spacing::Alone) };
192-
(!) => { Punct::new('!', Spacing::Alone) };
193-
(<) => { Punct::new('<', Spacing::Alone) };
194-
(>) => { Punct::new('>', Spacing::Alone) };
195-
(&) => { Punct::new('&', Spacing::Alone) };
196192
(=) => { Punct::new('=', Spacing::Alone) };
197193
(#) => { Punct::new('#', Spacing::Alone) };
198-
(|) => { Punct::new('|', Spacing::Alone) };
194+
(^) => { Punct::new('^', Spacing::Alone) };
199195
(:) => { Punct::new(':', Spacing::Alone) };
196+
(&) => { Punct::new('&', Spacing::Alone) };
197+
(|) => { Punct::new('|', Spacing::Alone) };
198+
(<) => { Punct::new('<', Spacing::Alone) };
199+
(>) => { Punct::new('>', Spacing::Alone) };
200200
(*) => { Punct::new('*', Spacing::Alone) };
201+
(!) => { Punct::new('!', Spacing::Alone) };
202+
(-) => { Punct::new('-', Spacing::Alone) };
201203
(_) => { Ident::new("_", Span::def_site()) };
202204
($i:ident) => { Ident::new(stringify!($i), Span::def_site()) };
203205
($lit:literal) => { stringify!($lit).parse::<Literal>().unwrap() };
@@ -238,6 +240,72 @@ macro_rules! minimal_quote_ts {
238240
[c.0, c.1].into_iter().collect::<TokenStream>()
239241
}
240242
};
243+
(&&) => {
244+
{
245+
let mut c = (
246+
TokenTree::from(Punct::new('+', Spacing::Joint)),
247+
TokenTree::from(Punct::new('=', Spacing::Alone))
248+
);
249+
c.0.set_span(Span::def_site());
250+
c.1.set_span(Span::def_site());
251+
[c.0, c.1].into_iter().collect::<TokenStream>()
252+
}
253+
};
254+
(||) => {
255+
{
256+
let mut c = (
257+
TokenTree::from(Punct::new('|', Spacing::Joint)),
258+
TokenTree::from(Punct::new('|', Spacing::Alone))
259+
);
260+
c.0.set_span(Span::def_site());
261+
c.1.set_span(Span::def_site());
262+
[c.0, c.1].into_iter().collect::<TokenStream>()
263+
}
264+
};
265+
(<<) => {
266+
{
267+
let mut c = (
268+
TokenTree::from(Punct::new('<', Spacing::Joint)),
269+
TokenTree::from(Punct::new('<', Spacing::Alone))
270+
);
271+
c.0.set_span(Span::def_site());
272+
c.1.set_span(Span::def_site());
273+
[c.0, c.1].into_iter().collect::<TokenStream>()
274+
}
275+
};
276+
(>>) => {
277+
{
278+
let mut c = (
279+
TokenTree::from(Punct::new('>', Spacing::Joint)),
280+
TokenTree::from(Punct::new('>', Spacing::Alone))
281+
);
282+
c.0.set_span(Span::def_site());
283+
c.1.set_span(Span::def_site());
284+
[c.0, c.1].into_iter().collect::<TokenStream>()
285+
}
286+
};
287+
(==) => {
288+
{
289+
let mut c = (
290+
TokenTree::from(Punct::new('=', Spacing::Joint)),
291+
TokenTree::from(Punct::new('=', Spacing::Alone))
292+
);
293+
c.0.set_span(Span::def_site());
294+
c.1.set_span(Span::def_site());
295+
[c.0, c.1].into_iter().collect::<TokenStream>()
296+
}
297+
};
298+
(<=) => {
299+
{
300+
let mut c = (
301+
TokenTree::from(Punct::new('<', Spacing::Joint)),
302+
TokenTree::from(Punct::new('=', Spacing::Alone))
303+
);
304+
c.0.set_span(Span::def_site());
305+
c.1.set_span(Span::def_site());
306+
[c.0, c.1].into_iter().collect::<TokenStream>()
307+
}
308+
};
241309
(!=) => {
242310
{
243311
let mut c = (
@@ -249,7 +317,18 @@ macro_rules! minimal_quote_ts {
249317
[c.0, c.1].into_iter().collect::<TokenStream>()
250318
}
251319
};
252-
($t:tt) => { TokenTree::from(minimal_quote_tt!($t)) };
320+
(>=) => {
321+
{
322+
let mut c = (
323+
TokenTree::from(Punct::new('>', Spacing::Joint)),
324+
TokenTree::from(Punct::new('=', Spacing::Alone))
325+
);
326+
c.0.set_span(Span::def_site());
327+
c.1.set_span(Span::def_site());
328+
[c.0, c.1].into_iter().collect::<TokenStream>()
329+
}
330+
};
331+
($t:t) => { TokenTree::from(minimal_quote_tt!($t)) };
253332
}
254333

255334
/// Simpler version of the real `quote!` macro, implemented solely

0 commit comments

Comments
 (0)