Allow field access on 'else'.
This commit is contained in:
parent
7aefa85de1
commit
fed464278d
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue