mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
BinOp helper to detect assignment
This commit is contained in:
parent
c15293e019
commit
5afb22e2b3
2 changed files with 19 additions and 11 deletions
|
@ -56,17 +56,7 @@ enum FlipAction {
|
|||
impl From<BinOp> for FlipAction {
|
||||
fn from(op_kind: BinOp) -> Self {
|
||||
match op_kind {
|
||||
BinOp::Assignment => FlipAction::DontFlip,
|
||||
BinOp::AddAssign => FlipAction::DontFlip,
|
||||
BinOp::DivAssign => FlipAction::DontFlip,
|
||||
BinOp::MulAssign => FlipAction::DontFlip,
|
||||
BinOp::RemAssign => FlipAction::DontFlip,
|
||||
BinOp::ShrAssign => FlipAction::DontFlip,
|
||||
BinOp::ShlAssign => FlipAction::DontFlip,
|
||||
BinOp::SubAssign => FlipAction::DontFlip,
|
||||
BinOp::BitOrAssign => FlipAction::DontFlip,
|
||||
BinOp::BitAndAssign => FlipAction::DontFlip,
|
||||
BinOp::BitXorAssign => FlipAction::DontFlip,
|
||||
kind if kind.is_assignment() => FlipAction::DontFlip,
|
||||
BinOp::GreaterTest => FlipAction::FlipAndReplaceOp("<"),
|
||||
BinOp::GreaterEqualTest => FlipAction::FlipAndReplaceOp("<="),
|
||||
BinOp::LesserTest => FlipAction::FlipAndReplaceOp(">"),
|
||||
|
|
|
@ -126,6 +126,24 @@ pub enum BinOp {
|
|||
BitXorAssign,
|
||||
}
|
||||
|
||||
impl BinOp {
|
||||
pub fn is_assignment(&self) -> bool {
|
||||
match *self {
|
||||
BinOp::Assignment
|
||||
| BinOp::AddAssign
|
||||
| BinOp::DivAssign
|
||||
| BinOp::MulAssign
|
||||
| BinOp::RemAssign
|
||||
| BinOp::ShrAssign
|
||||
| BinOp::ShlAssign
|
||||
| BinOp::SubAssign
|
||||
| BinOp::BitOrAssign
|
||||
| BinOp::BitAndAssign
|
||||
| BinOp::BitXorAssign => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
impl ast::BinExpr {
|
||||
pub fn op_details(&self) -> Option<(SyntaxToken, BinOp)> {
|
||||
self.syntax().children_with_tokens().filter_map(|it| it.into_token()).find_map(|c| {
|
||||
|
|
Loading…
Reference in a new issue