kotlin_parser/parse/expression/
return_expr.rs

1use chumsky::prelude::*;
2use crate::ast::*;
3
4use super::{expression_parser, label::after_label_parser};
5
6pub fn return_expr_parser<'a>(
7    stmt_parser: impl Parser<char, Statement, Error = Simple<char>> + Clone + 'a,
8) -> impl Parser<char, Expression, Error = Simple<char>> + 'a {
9    just("return")
10        .padded()
11        .ignore_then(after_label_parser().padded().or_not())
12        .then(expression_parser(stmt_parser).padded().map(Box::new).or_not())
13        .map(|(label, expr)| Expression::Return(ReturnExpression { label, expr }))
14}