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 super::Chain;
|
||||||
use crate::{
|
use crate::{
|
||||||
expr::UntypedExpr,
|
expr::UntypedExpr,
|
||||||
parser::{token::Token, ParseError},
|
parser::{token::Token, ParseError},
|
||||||
};
|
};
|
||||||
|
use chumsky::prelude::*;
|
||||||
|
|
||||||
pub(crate) fn parser() -> impl Parser<Token, Chain, Error = ParseError> {
|
pub(crate) fn parser() -> impl Parser<Token, Chain, Error = ParseError> {
|
||||||
just(Token::Dot)
|
just(Token::Dot)
|
||||||
.ignore_then(select! {
|
.ignore_then(choice((
|
||||||
Token::Name { name } => name,
|
select! { Token::Else => "else".to_string() },
|
||||||
})
|
select! { Token::Name { name } => name, },
|
||||||
|
)))
|
||||||
.map_with_span(Chain::FieldAccess)
|
.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