blob: 8a7f0e5259f4ff604c51079a1f6176a6d8dc716d [file] [log] [blame]
David Tolnaye0824032017-12-27 15:25:56 -05001use proc_macro2::{TokenNode, TokenTree};
2use cursor::Cursor;
3use {parse_error, PResult};
4
5#[cfg(feature = "full")]
6use proc_macro2::Delimiter;
7
8pub fn delimited(input: Cursor) -> PResult<TokenTree> {
9 match input.token_tree() {
10 Some((
11 rest,
12 token @ TokenTree {
13 kind: TokenNode::Group(..),
14 ..
15 },
16 )) => Ok((rest, token)),
17 _ => parse_error(),
18 }
19}
20
21#[cfg(feature = "full")]
22pub fn braced(input: Cursor) -> PResult<TokenTree> {
23 match input.token_tree() {
24 Some((
25 rest,
26 token @ TokenTree {
27 kind: TokenNode::Group(Delimiter::Brace, ..),
28 ..
29 },
30 )) => Ok((rest, token)),
31 _ => parse_error(),
32 }
33}
34
35#[cfg(feature = "full")]
36pub fn parenthesized(input: Cursor) -> PResult<TokenTree> {
37 match input.token_tree() {
38 Some((
39 rest,
40 token @ TokenTree {
41 kind: TokenNode::Group(Delimiter::Parenthesis, ..),
42 ..
43 },
44 )) => Ok((rest, token)),
45 _ => parse_error(),
46 }
47}