kotlin_parser/parse/declaration/
enum_entry.rs

1use chumsky::prelude::*;
2
3use crate::{ast::*, parse::expression::call::call_args_parser};
4
5use super::modifier_parser;
6
7pub fn enum_entry_parser(
8    decl_parser: impl Parser<char, Declaration, Error = Simple<char>>,
9    expr_parser: impl Parser<char, Expression, Error = Simple<char>>,
10) -> impl Parser<char, EnumEntryDeclaration, Error = Simple<char>> {
11    modifier_parser()
12        .repeated()
13        .or_not()
14        .then(text::ident().padded())
15        .then(call_args_parser(expr_parser))
16        .then(
17            decl_parser
18                .repeated()
19                .delimited_by(just('{').padded(), just('}').padded())
20                .or_not(),
21        )
22        .map(|(((modifiers, name), args), decls)| EnumEntryDeclaration {
23            modifiers: modifiers.unwrap_or_default(),
24            name,
25            args,
26            body: decls.unwrap_or_default(),
27        })
28}