kotlin_parser/parse/declaration/
enum_entry.rs1use 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}