This commit is contained in:
Aleksey Kladov 2019-08-17 17:14:22 +03:00
parent d15cf2c960
commit fd4c083e42

View file

@ -132,41 +132,42 @@ pub enum BinOp {
impl ast::BinExpr { impl ast::BinExpr {
fn op_details(&self) -> Option<(SyntaxToken, BinOp)> { fn op_details(&self) -> Option<(SyntaxToken, BinOp)> {
self.syntax().children_with_tokens().filter_map(|it| it.into_token()).find_map(|c| match c self.syntax().children_with_tokens().filter_map(|it| it.into_token()).find_map(|c| {
.kind() let bin_op = match c.kind() {
{ T![||] => BinOp::BooleanOr,
T![||] => Some((c, BinOp::BooleanOr)), T![&&] => BinOp::BooleanAnd,
T![&&] => Some((c, BinOp::BooleanAnd)), T![==] => BinOp::EqualityTest,
T![==] => Some((c, BinOp::EqualityTest)), T![!=] => BinOp::NegatedEqualityTest,
T![!=] => Some((c, BinOp::NegatedEqualityTest)), T![<=] => BinOp::LesserEqualTest,
T![<=] => Some((c, BinOp::LesserEqualTest)), T![>=] => BinOp::GreaterEqualTest,
T![>=] => Some((c, BinOp::GreaterEqualTest)), T![<] => BinOp::LesserTest,
T![<] => Some((c, BinOp::LesserTest)), T![>] => BinOp::GreaterTest,
T![>] => Some((c, BinOp::GreaterTest)), T![+] => BinOp::Addition,
T![+] => Some((c, BinOp::Addition)), T![*] => BinOp::Multiplication,
T![*] => Some((c, BinOp::Multiplication)), T![-] => BinOp::Subtraction,
T![-] => Some((c, BinOp::Subtraction)), T![/] => BinOp::Division,
T![/] => Some((c, BinOp::Division)), T![%] => BinOp::Remainder,
T![%] => Some((c, BinOp::Remainder)), T![<<] => BinOp::LeftShift,
T![<<] => Some((c, BinOp::LeftShift)), T![>>] => BinOp::RightShift,
T![>>] => Some((c, BinOp::RightShift)), T![^] => BinOp::BitwiseXor,
T![^] => Some((c, BinOp::BitwiseXor)), T![|] => BinOp::BitwiseOr,
T![|] => Some((c, BinOp::BitwiseOr)), T![&] => BinOp::BitwiseAnd,
T![&] => Some((c, BinOp::BitwiseAnd)), T![..] => BinOp::RangeRightOpen,
T![..] => Some((c, BinOp::RangeRightOpen)), T![..=] => BinOp::RangeRightClosed,
T![..=] => Some((c, BinOp::RangeRightClosed)), T![=] => BinOp::Assignment,
T![=] => Some((c, BinOp::Assignment)), T![+=] => BinOp::AddAssign,
T![+=] => Some((c, BinOp::AddAssign)), T![/=] => BinOp::DivAssign,
T![/=] => Some((c, BinOp::DivAssign)), T![*=] => BinOp::MulAssign,
T![*=] => Some((c, BinOp::MulAssign)), T![%=] => BinOp::RemAssign,
T![%=] => Some((c, BinOp::RemAssign)), T![>>=] => BinOp::ShrAssign,
T![>>=] => Some((c, BinOp::ShrAssign)), T![<<=] => BinOp::ShlAssign,
T![<<=] => Some((c, BinOp::ShlAssign)), T![-=] => BinOp::SubAssign,
T![-=] => Some((c, BinOp::SubAssign)), T![|=] => BinOp::BitOrAssign,
T![|=] => Some((c, BinOp::BitOrAssign)), T![&=] => BinOp::BitAndAssign,
T![&=] => Some((c, BinOp::BitAndAssign)), T![^=] => BinOp::BitXorAssign,
T![^=] => Some((c, BinOp::BitXorAssign)), _ => return None,
_ => None, };
Some((c, bin_op))
}) })
} }