Skip to content

Commit c1a7169

Browse files
bors[bot]matklad
andauthored
Merge #9892
9892: internal: remove a remnant of old editing infra r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents bd2219b + a78decc commit c1a7169

File tree

4 files changed

+26
-50
lines changed

4 files changed

+26
-50
lines changed

crates/ide_assists/src/lib.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ mod handlers {
6161
mod convert_into_to_from;
6262
mod convert_iter_for_each_to_for;
6363
mod convert_tuple_struct_to_named_struct;
64-
mod early_return;
64+
mod convert_to_guarded_return;
6565
mod expand_glob_import;
6666
mod extract_function;
6767
mod extract_struct_from_enum_variant;
@@ -126,14 +126,14 @@ mod handlers {
126126
apply_demorgan::apply_demorgan,
127127
auto_import::auto_import,
128128
change_visibility::change_visibility,
129-
convert_bool_then::convert_if_to_bool_then,
130129
convert_bool_then::convert_bool_then_to_if,
130+
convert_bool_then::convert_if_to_bool_then,
131131
convert_comment_block::convert_comment_block,
132132
convert_integer_literal::convert_integer_literal,
133133
convert_into_to_from::convert_into_to_from,
134134
convert_iter_for_each_to_for::convert_iter_for_each_to_for,
135+
convert_to_guarded_return::convert_to_guarded_return,
135136
convert_tuple_struct_to_named_struct::convert_tuple_struct_to_named_struct,
136-
early_return::convert_to_guarded_return,
137137
expand_glob_import::expand_glob_import,
138138
extract_struct_from_enum_variant::extract_struct_from_enum_variant,
139139
extract_type_alias::extract_type_alias,
@@ -144,19 +144,16 @@ mod handlers {
144144
flip_trait_bound::flip_trait_bound,
145145
generate_default_from_enum_variant::generate_default_from_enum_variant,
146146
generate_default_from_new::generate_default_from_new,
147-
generate_is_empty_from_len::generate_is_empty_from_len,
148147
generate_deref::generate_deref,
149148
generate_derive::generate_derive,
150149
generate_enum_is_method::generate_enum_is_method,
151150
generate_enum_projection_method::generate_enum_as_method,
152151
generate_enum_projection_method::generate_enum_try_into_method,
153152
generate_from_impl_for_enum::generate_from_impl_for_enum,
154153
generate_function::generate_function,
155-
generate_getter::generate_getter,
156-
generate_getter::generate_getter_mut,
157154
generate_impl::generate_impl,
155+
generate_is_empty_from_len::generate_is_empty_from_len,
158156
generate_new::generate_new,
159-
generate_setter::generate_setter,
160157
infer_function_return_type::infer_function_return_type,
161158
inline_call::inline_call,
162159
inline_local_variable::inline_local_variable,
@@ -204,6 +201,10 @@ mod handlers {
204201
//
205202
extract_variable::extract_variable,
206203
extract_function::extract_function,
204+
//
205+
generate_getter::generate_getter,
206+
generate_getter::generate_getter_mut,
207+
generate_setter::generate_setter,
207208
// Are you sure you want to add new assist here, and not to the
208209
// sorted list above?
209210
]

crates/ide_assists/src/utils.rs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -209,21 +209,22 @@ pub(crate) fn invert_boolean_expression(expr: ast::Expr) -> ast::Expr {
209209

210210
fn invert_special_case(expr: &ast::Expr) -> Option<ast::Expr> {
211211
match expr {
212-
ast::Expr::BinExpr(bin) => match bin.op_kind()? {
213-
ast::BinaryOp::CmpOp(op) => {
214-
let rev_op = match op {
215-
ast::CmpOp::Eq { negated: false } => T![!=],
216-
ast::CmpOp::Eq { negated: true } => T![==],
217-
ast::CmpOp::Ord { ordering: ast::Ordering::Less, strict: true } => T![>=],
218-
ast::CmpOp::Ord { ordering: ast::Ordering::Less, strict: false } => T![>],
219-
ast::CmpOp::Ord { ordering: ast::Ordering::Greater, strict: true } => T![<=],
220-
ast::CmpOp::Ord { ordering: ast::Ordering::Greater, strict: false } => T![<],
221-
};
222-
bin.replace_op(rev_op).map(ast::Expr::from)
223-
}
224-
// Parenthesize other expressions before prefixing `!`
225-
_ => Some(make::expr_prefix(T![!], make::expr_paren(expr.clone()))),
226-
},
212+
ast::Expr::BinExpr(bin) => {
213+
let bin = bin.clone_for_update();
214+
let op_token = bin.op_token()?;
215+
let rev_token = match op_token.kind() {
216+
T![==] => T![!=],
217+
T![!=] => T![==],
218+
T![<] => T![>=],
219+
T![<=] => T![>],
220+
T![>] => T![<=],
221+
T![>=] => T![<],
222+
// Parenthesize other expressions before prefixing `!`
223+
_ => return Some(make::expr_prefix(T![!], make::expr_paren(expr.clone()))),
224+
};
225+
ted::replace(op_token, make::token(rev_token));
226+
Some(bin.into())
227+
}
227228
ast::Expr::MethodCallExpr(mce) => {
228229
let receiver = mce.receiver()?;
229230
let method = mce.name_ref()?;

crates/syntax/src/ast/edit.rs

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,16 @@
11
//! This module contains functions for editing syntax trees. As the trees are
22
//! immutable, all function here return a fresh copy of the tree, instead of
33
//! doing an in-place modification.
4-
use std::{
5-
fmt, iter,
6-
ops::{self, RangeInclusive},
7-
};
4+
use std::{fmt, iter, ops};
85

96
use crate::{
107
algo,
118
ast::{self, make, AstNode},
12-
ted, AstToken, NodeOrToken, SyntaxElement, SyntaxKind,
9+
ted, AstToken, NodeOrToken, SyntaxElement,
1310
SyntaxKind::{ATTR, COMMENT, WHITESPACE},
1411
SyntaxNode, SyntaxToken,
1512
};
1613

17-
impl ast::BinExpr {
18-
#[must_use]
19-
pub fn replace_op(&self, op: SyntaxKind) -> Option<ast::BinExpr> {
20-
let op_node: SyntaxElement = self.op_details()?.0.into();
21-
let to_insert: Option<SyntaxElement> = Some(make::token(op).into());
22-
Some(self.replace_children(single_node(op_node), to_insert))
23-
}
24-
}
25-
2614
impl ast::UseTree {
2715
/// Splits off the given prefix, making it the path component of the use tree, appending the rest of the path to all UseTreeList items.
2816
#[must_use]
@@ -191,15 +179,6 @@ fn prev_tokens(token: SyntaxToken) -> impl Iterator<Item = SyntaxToken> {
191179
}
192180

193181
pub trait AstNodeEdit: AstNode + Clone + Sized {
194-
#[must_use]
195-
fn replace_children(
196-
&self,
197-
to_replace: RangeInclusive<SyntaxElement>,
198-
to_insert: impl IntoIterator<Item = SyntaxElement>,
199-
) -> Self {
200-
let new_syntax = algo::replace_children(self.syntax(), to_replace, to_insert);
201-
Self::cast(new_syntax).unwrap()
202-
}
203182
fn indent_level(&self) -> IndentLevel {
204183
IndentLevel::from_node(self.syntax())
205184
}
@@ -220,11 +199,6 @@ pub trait AstNodeEdit: AstNode + Clone + Sized {
220199

221200
impl<N: AstNode + Clone> AstNodeEdit for N {}
222201

223-
fn single_node(element: impl Into<SyntaxElement>) -> RangeInclusive<SyntaxElement> {
224-
let element = element.into();
225-
element.clone()..=element
226-
}
227-
228202
#[test]
229203
fn test_increase_indent() {
230204
let arm_list = {

0 commit comments

Comments
 (0)