Skip to content

Commit 182a2b8

Browse files
bors[bot]matklad
andauthored
Merge #9901
9901: internal: remove dead code r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
2 parents 1e0d203 + 78c7940 commit 182a2b8

File tree

3 files changed

+9
-115
lines changed

3 files changed

+9
-115
lines changed

crates/mbe/src/syntax_bridge.rs

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -705,8 +705,8 @@ mod tests {
705705
use crate::tests::parse_macro;
706706
use parser::TokenSource;
707707
use syntax::{
708-
algo::{insert_children, InsertPosition},
709-
ast::AstNode,
708+
ast::{make, AstNode},
709+
ted,
710710
};
711711
use test_utils::assert_eq_text;
712712

@@ -772,42 +772,26 @@ mod tests {
772772

773773
#[test]
774774
fn test_token_tree_last_child_is_white_space() {
775-
let source_file = ast::SourceFile::parse("f!({} );").ok().unwrap();
775+
let source_file = ast::SourceFile::parse("f!{}").ok().unwrap();
776776
let macro_call = source_file.syntax().descendants().find_map(ast::MacroCall::cast).unwrap();
777777
let token_tree = macro_call.token_tree().unwrap();
778778

779779
// Token Tree now is :
780780
// TokenTree
781-
// - T!['(']
782781
// - TokenTree
783782
// - T!['{']
784783
// - T!['}']
785-
// - WHITE_SPACE
786-
// - T![')']
787-
788-
let rbrace =
789-
token_tree.syntax().descendants_with_tokens().find(|it| it.kind() == T!['}']).unwrap();
790-
let space = token_tree
791-
.syntax()
792-
.descendants_with_tokens()
793-
.find(|it| it.kind() == SyntaxKind::WHITESPACE)
794-
.unwrap();
795-
796-
// reorder th white space, such that the white is inside the inner token-tree.
797-
let token_tree = insert_children(
798-
&rbrace.parent().unwrap(),
799-
InsertPosition::Last,
800-
std::iter::once(space),
801-
);
802784

785+
let token_tree = token_tree.clone_for_update();
786+
ted::append_child(token_tree.syntax(), make::tokens::single_space());
787+
let token_tree = token_tree.clone_subtree();
803788
// Token Tree now is :
804789
// TokenTree
805790
// - T!['{']
806791
// - T!['}']
807792
// - WHITE_SPACE
808-
let token_tree = ast::TokenTree::cast(token_tree).unwrap();
809-
let tt = syntax_node_to_token_tree(token_tree.syntax()).0;
810793

794+
let tt = syntax_node_to_token_tree(token_tree.syntax()).0;
811795
assert_eq!(tt.delimiter_kind(), Some(tt::DelimiterKind::Brace));
812796
}
813797

crates/syntax/src/algo.rs

Lines changed: 2 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use rustc_hash::FxHashMap;
88
use text_edit::TextEditBuilder;
99

1010
use crate::{
11-
AstNode, Direction, NodeOrToken, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxNodePtr,
12-
SyntaxToken, TextRange, TextSize,
11+
AstNode, Direction, NodeOrToken, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxToken, TextRange,
12+
TextSize,
1313
};
1414

1515
/// Returns ancestors of the node at the offset, sorted by length. This should
@@ -92,14 +92,6 @@ pub fn has_errors(node: &SyntaxNode) -> bool {
9292
node.children().any(|it| it.kind() == SyntaxKind::ERROR)
9393
}
9494

95-
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
96-
pub enum InsertPosition<T> {
97-
First,
98-
Last,
99-
Before(T),
100-
After(T),
101-
}
102-
10395
type FxIndexMap<K, V> = IndexMap<K, V, BuildHasherDefault<rustc_hash::FxHasher>>;
10496

10597
#[derive(Debug, Hash, PartialEq, Eq)]
@@ -250,87 +242,6 @@ pub fn diff(from: &SyntaxNode, to: &SyntaxNode) -> TreeDiff {
250242
}
251243
}
252244

253-
/// Adds specified children (tokens or nodes) to the current node at the
254-
/// specific position.
255-
///
256-
/// This is a type-unsafe low-level editing API, if you need to use it,
257-
/// prefer to create a type-safe abstraction on top of it instead.
258-
pub fn insert_children(
259-
parent: &SyntaxNode,
260-
position: InsertPosition<SyntaxElement>,
261-
to_insert: impl IntoIterator<Item = SyntaxElement>,
262-
) -> SyntaxNode {
263-
let mut to_insert = to_insert.into_iter();
264-
_insert_children(parent, position, &mut to_insert)
265-
}
266-
267-
fn _insert_children(
268-
parent: &SyntaxNode,
269-
position: InsertPosition<SyntaxElement>,
270-
to_insert: &mut dyn Iterator<Item = SyntaxElement>,
271-
) -> SyntaxNode {
272-
let mut delta = TextSize::default();
273-
let to_insert = to_insert.map(|element| {
274-
delta += element.text_range().len();
275-
to_green_element(element)
276-
});
277-
278-
let parent_green = parent.green();
279-
let mut old_children = parent_green.children().map(|it| match it {
280-
NodeOrToken::Token(it) => NodeOrToken::Token(it.to_owned()),
281-
NodeOrToken::Node(it) => NodeOrToken::Node(it.to_owned()),
282-
});
283-
284-
let new_children = match &position {
285-
InsertPosition::First => to_insert.chain(old_children).collect::<Vec<_>>(),
286-
InsertPosition::Last => old_children.chain(to_insert).collect::<Vec<_>>(),
287-
InsertPosition::Before(anchor) | InsertPosition::After(anchor) => {
288-
let take_anchor = if let InsertPosition::After(_) = position { 1 } else { 0 };
289-
let split_at = position_of_child(parent, anchor.clone()) + take_anchor;
290-
let before = old_children.by_ref().take(split_at).collect::<Vec<_>>();
291-
before.into_iter().chain(to_insert).chain(old_children).collect::<Vec<_>>()
292-
}
293-
};
294-
295-
with_children(parent, new_children)
296-
}
297-
298-
fn with_children(
299-
parent: &SyntaxNode,
300-
new_children: Vec<NodeOrToken<rowan::GreenNode, rowan::GreenToken>>,
301-
) -> SyntaxNode {
302-
let _p = profile::span("with_children");
303-
304-
let new_green = rowan::GreenNode::new(rowan::SyntaxKind(parent.kind() as u16), new_children);
305-
with_green(parent, new_green)
306-
}
307-
308-
fn with_green(syntax_node: &SyntaxNode, green: rowan::GreenNode) -> SyntaxNode {
309-
let len = green.children().map(|it| it.text_len()).sum::<TextSize>();
310-
let new_root_node = syntax_node.replace_with(green);
311-
let new_root_node = SyntaxNode::new_root(new_root_node);
312-
313-
// FIXME: use a more elegant way to re-fetch the node (#1185), make
314-
// `range` private afterwards
315-
let mut ptr = SyntaxNodePtr::new(syntax_node);
316-
ptr.range = TextRange::at(ptr.range.start(), len);
317-
ptr.to_node(&new_root_node)
318-
}
319-
320-
fn position_of_child(parent: &SyntaxNode, child: SyntaxElement) -> usize {
321-
parent
322-
.children_with_tokens()
323-
.position(|it| it == child)
324-
.expect("element is not a child of current element")
325-
}
326-
327-
fn to_green_element(element: SyntaxElement) -> NodeOrToken<rowan::GreenNode, rowan::GreenToken> {
328-
match element {
329-
NodeOrToken::Node(it) => it.green().into(),
330-
NodeOrToken::Token(it) => it.green().to_owned().into(),
331-
}
332-
}
333-
334245
#[cfg(test)]
335246
mod tests {
336247
use expect_test::{expect, Expect};

crates/syntax/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ use stdx::format_to;
4747
use text_edit::Indel;
4848

4949
pub use crate::{
50-
algo::InsertPosition,
5150
ast::{AstNode, AstToken},
5251
parsing::lexer::{lex_single_syntax_kind, lex_single_valid_syntax_kind, tokenize, Token},
5352
ptr::{AstPtr, SyntaxNodePtr},

0 commit comments

Comments
 (0)