Work on closures.

This commit is contained in:
Jesse Brault 2025-09-07 18:42:25 -05:00
parent bae90b8b80
commit 6652b9fc63
2 changed files with 22 additions and 19 deletions

View File

@ -587,3 +587,23 @@ ExpressionList:
- expressions: - expressions:
rule: Expression rule: Expression
vec: true vec: true
# Closure
Closure:
children:
- closure_parameters:
build:
or_else_default: true
- statements:
rule: Statement
vec: true
ClosureParameters:
children:
- parameters:
rule: ClosureParameters
vec: true
ClosureParameter:
children:
- identifier
- type_use:
optional: true

View File

@ -789,13 +789,9 @@ ExpressionList = {
// Closure // Closure
Closure = { Closure = {
( Cons | Mut )? "{"
~ Move?
~ ClosureCaptures?
~ "{"
~ ( ClosureParameters? ~ "->" )? ~ ( ClosureParameters? ~ "->" )?
~ Statement* ~ Statement*
~ Expression?
~ "}" ~ "}"
} }
@ -809,19 +805,6 @@ ClosureParameter = {
~ ( ":" ~ TypeUse )? ~ ( ":" ~ TypeUse )?
} }
ClosureCaptures = {
"|"
~ ClosureCapture
~ ( "," ~ ClosureCapture )*
~ "|"
}
ClosureCapture = {
Borrow*
~ Mut?
~ Identifier
}
// Literals // Literals
Literal = { Literal = {