Skip to content

Commit 4e81ca3

Browse files
committed
misc fixes
1 parent f6e05a7 commit 4e81ca3

File tree

3 files changed

+20
-26
lines changed

3 files changed

+20
-26
lines changed

src/tools/rust-analyzer/crates/syntax/src/syntax_editor.rs

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ impl SyntaxAnnotation {
150150
}
151151
}
152152

153+
impl Default for SyntaxAnnotation {
154+
fn default() -> Self {
155+
Self::new()
156+
}
157+
}
158+
153159
/// Position describing where to insert elements
154160
#[derive(Debug)]
155161
pub struct Position {
@@ -445,24 +451,6 @@ mod tests {
445451
.all(|element| element.ancestors().any(|it| &it == edit.root())))
446452
}
447453

448-
#[test]
449-
#[should_panic = "some replace change ranges intersect: [Replace(Node([email protected]), Some(Node([email protected]))), Replace(Node([email protected]), Some(Node([email protected])))]"]
450-
fn fail_on_non_disjoint_single_replace() {
451-
let root = make::match_arm([make::wildcard_pat().into()], None, make::expr_tuple([]));
452-
453-
let to_wrap = root.syntax().descendants().find_map(ast::TupleExpr::cast).unwrap();
454-
455-
let mut editor = SyntaxEditor::new(root.syntax().clone());
456-
457-
let name_ref = make::name_ref("var_name").clone_for_update();
458-
459-
// should die, ranges are not disjoint
460-
editor.replace(to_wrap.syntax(), name_ref.syntax());
461-
editor.replace(to_wrap.syntax(), name_ref.syntax());
462-
463-
let _ = editor.finish();
464-
}
465-
466454
#[test]
467455
fn test_insert_independent() {
468456
let root = make::block_expr(

src/tools/rust-analyzer/crates/syntax/src/syntax_editor/edit_algo.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//! Implementation of applying changes to a syntax tree.
2+
13
use std::{cmp::Ordering, collections::VecDeque, ops::RangeInclusive};
24

35
use rowan::TextRange;
@@ -209,7 +211,7 @@ pub(super) fn apply_edits(editor: SyntaxEditor) -> SyntaxEdit {
209211
}
210212
},
211213
Change::Replace(target, _) | Change::ReplaceWithMany(target, _) => {
212-
*target = upmap_target(&target);
214+
*target = upmap_target(target);
213215
}
214216
Change::ReplaceAll(range, _) => {
215217
*range = upmap_target(range.start())..=upmap_target(range.end());
@@ -233,7 +235,7 @@ pub(super) fn apply_edits(editor: SyntaxEditor) -> SyntaxEdit {
233235
Change::Replace(target, None) => {
234236
target.detach();
235237
}
236-
Change::Replace(SyntaxElement::Node(target), Some(new_target)) if &target == &root => {
238+
Change::Replace(SyntaxElement::Node(target), Some(new_target)) if target == root => {
237239
root = new_target.into_node().expect("root node replacement should be a node");
238240
}
239241
Change::Replace(target, Some(new_target)) => {
@@ -288,7 +290,7 @@ struct ChangedAncestor {
288290

289291
enum ChangedAncestorKind {
290292
Single { node: SyntaxNode },
291-
Range { _changed_elements: RangeInclusive<SyntaxElement>, in_parent: SyntaxNode },
293+
Range { _changed_elements: RangeInclusive<SyntaxElement>, _in_parent: SyntaxNode },
292294
}
293295

294296
impl ChangedAncestor {
@@ -307,7 +309,7 @@ impl ChangedAncestor {
307309
Self {
308310
kind: ChangedAncestorKind::Range {
309311
_changed_elements: range.clone(),
310-
in_parent: range.start().parent().unwrap(),
312+
_in_parent: range.start().parent().unwrap(),
311313
},
312314
change_index,
313315
}
@@ -316,7 +318,7 @@ impl ChangedAncestor {
316318
fn affected_range(&self) -> TextRange {
317319
match &self.kind {
318320
ChangedAncestorKind::Single { node } => node.text_range(),
319-
ChangedAncestorKind::Range { _changed_elements: changed_nodes, in_parent: _ } => {
321+
ChangedAncestorKind::Range { _changed_elements: changed_nodes, _in_parent: _ } => {
320322
TextRange::new(
321323
changed_nodes.start().text_range().start(),
322324
changed_nodes.end().text_range().end(),
@@ -339,7 +341,7 @@ impl TreeMutator {
339341

340342
fn make_element_mut(&self, element: &SyntaxElement) -> SyntaxElement {
341343
match element {
342-
SyntaxElement::Node(node) => SyntaxElement::Node(self.make_syntax_mut(&node)),
344+
SyntaxElement::Node(node) => SyntaxElement::Node(self.make_syntax_mut(node)),
343345
SyntaxElement::Token(token) => {
344346
let parent = self.make_syntax_mut(&token.parent().unwrap());
345347
parent.children_with_tokens().nth(token.index()).unwrap()

src/tools/rust-analyzer/crates/syntax/src/syntax_editor/mapping.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
//! Maps syntax elements through disjoint syntax nodes.
2+
//!
3+
//! [`SyntaxMappingBuilder`] should be used to create mappings to add to a [`SyntaxEditor`]
4+
15
use itertools::Itertools;
26
use rustc_hash::FxHashMap;
37

@@ -168,11 +172,11 @@ impl SyntaxMapping {
168172
match (input_mapping, input_ancestor) {
169173
(Some(input_mapping), _) => {
170174
// A mapping exists at the input, follow along the tree
171-
Some(self.upmap_child(&input_mapping, &input_mapping, &output_root))
175+
Some(self.upmap_child(&input_mapping, &input_mapping, output_root))
172176
}
173177
(None, Some(input_ancestor)) => {
174178
// A mapping exists at an ancestor, follow along the tree
175-
Some(self.upmap_child(input, &input_ancestor, &output_root))
179+
Some(self.upmap_child(input, &input_ancestor, output_root))
176180
}
177181
(None, None) => {
178182
// No mapping exists at all, is the same position in the final tree

0 commit comments

Comments
 (0)