diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_assists/src/assists/flip_binexpr.rs | 12 | ||||
-rw-r--r-- | crates/ra_syntax/src/ast/expr_extensions.rs | 18 |
2 files changed, 19 insertions, 11 deletions
diff --git a/crates/ra_assists/src/assists/flip_binexpr.rs b/crates/ra_assists/src/assists/flip_binexpr.rs index 386045eb0..2d91b2a7e 100644 --- a/crates/ra_assists/src/assists/flip_binexpr.rs +++ b/crates/ra_assists/src/assists/flip_binexpr.rs | |||
@@ -56,17 +56,7 @@ enum FlipAction { | |||
56 | impl From<BinOp> for FlipAction { | 56 | impl From<BinOp> for FlipAction { |
57 | fn from(op_kind: BinOp) -> Self { | 57 | fn from(op_kind: BinOp) -> Self { |
58 | match op_kind { | 58 | match op_kind { |
59 | BinOp::Assignment => FlipAction::DontFlip, | 59 | kind if kind.is_assignment() => FlipAction::DontFlip, |
60 | BinOp::AddAssign => FlipAction::DontFlip, | ||
61 | BinOp::DivAssign => FlipAction::DontFlip, | ||
62 | BinOp::MulAssign => FlipAction::DontFlip, | ||
63 | BinOp::RemAssign => FlipAction::DontFlip, | ||
64 | BinOp::ShrAssign => FlipAction::DontFlip, | ||
65 | BinOp::ShlAssign => FlipAction::DontFlip, | ||
66 | BinOp::SubAssign => FlipAction::DontFlip, | ||
67 | BinOp::BitOrAssign => FlipAction::DontFlip, | ||
68 | BinOp::BitAndAssign => FlipAction::DontFlip, | ||
69 | BinOp::BitXorAssign => FlipAction::DontFlip, | ||
70 | BinOp::GreaterTest => FlipAction::FlipAndReplaceOp("<"), | 60 | BinOp::GreaterTest => FlipAction::FlipAndReplaceOp("<"), |
71 | BinOp::GreaterEqualTest => FlipAction::FlipAndReplaceOp("<="), | 61 | BinOp::GreaterEqualTest => FlipAction::FlipAndReplaceOp("<="), |
72 | BinOp::LesserTest => FlipAction::FlipAndReplaceOp(">"), | 62 | BinOp::LesserTest => FlipAction::FlipAndReplaceOp(">"), |
diff --git a/crates/ra_syntax/src/ast/expr_extensions.rs b/crates/ra_syntax/src/ast/expr_extensions.rs index 2fd039837..23b6aa901 100644 --- a/crates/ra_syntax/src/ast/expr_extensions.rs +++ b/crates/ra_syntax/src/ast/expr_extensions.rs | |||
@@ -126,6 +126,24 @@ pub enum BinOp { | |||
126 | BitXorAssign, | 126 | BitXorAssign, |
127 | } | 127 | } |
128 | 128 | ||
129 | impl BinOp { | ||
130 | pub fn is_assignment(&self) -> bool { | ||
131 | match *self { | ||
132 | BinOp::Assignment | ||
133 | | BinOp::AddAssign | ||
134 | | BinOp::DivAssign | ||
135 | | BinOp::MulAssign | ||
136 | | BinOp::RemAssign | ||
137 | | BinOp::ShrAssign | ||
138 | | BinOp::ShlAssign | ||
139 | | BinOp::SubAssign | ||
140 | | BinOp::BitOrAssign | ||
141 | | BinOp::BitAndAssign | ||
142 | | BinOp::BitXorAssign => true, | ||
143 | _ => false, | ||
144 | } | ||
145 | } | ||
146 | } | ||
129 | impl ast::BinExpr { | 147 | impl ast::BinExpr { |
130 | pub fn op_details(&self) -> Option<(SyntaxToken, BinOp)> { | 148 | pub fn op_details(&self) -> Option<(SyntaxToken, BinOp)> { |
131 | self.syntax().children_with_tokens().filter_map(|it| it.into_token()).find_map(|c| { | 149 | self.syntax().children_with_tokens().filter_map(|it| it.into_token()).find_map(|c| { |