Allow field access on 'else'.

This commit is contained in:
KtorZ 2024-08-31 00:01:46 +02:00
parent 7aefa85de1
commit fed464278d
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
1 changed files with 20 additions and 5 deletions

View File

@ -1,16 +1,16 @@
use chumsky::prelude::*;
use super::Chain;
use crate::{
expr::UntypedExpr,
parser::{token::Token, ParseError},
};
use chumsky::prelude::*;
pub(crate) fn parser() -> impl Parser<Token, Chain, Error = ParseError> {
just(Token::Dot)
.ignore_then(select! {
Token::Name { name } => name,
})
.ignore_then(choice((
select! { Token::Else => "else".to_string() },
select! { Token::Name { name } => name, },
)))
.map_with_span(Chain::FieldAccess)
}
@ -28,3 +28,18 @@ pub(crate) fn constructor() -> impl Parser<Token, UntypedExpr, Error = ParseErro
}),
})
}
#[cfg(test)]
mod tests {
use crate::assert_expr;
#[test]
fn field_access_else_1() {
assert_expr!("foo.else");
}
#[test]
fn field_access_else_2() {
assert_expr!("foo.bar.else");
}
}