use syn::parse::{Parse, ParseStream};
use crate::parse::next_node_id;
use crate::pattern::tuple::TupleElement;
#[derive(Debug, Clone)]
pub(crate) struct PatternEnum {
pub node_id: usize,
pub path: syn::Path,
pub elements: Vec<TupleElement>,
}
impl Parse for PatternEnum {
fn parse(input: ParseStream) -> syn::Result<Self> {
let path: syn::Path = input.parse()?;
let elements = if input.peek(syn::token::Paren) {
let content;
syn::parenthesized!(content in input);
TupleElement::parse_comma_separated(&content)?
} else {
vec![]
};
Ok(PatternEnum {
node_id: next_node_id(),
path,
elements,
})
}
}