diff options
| author | Florian Diebold <flodiebold@gmail.com> | 2022-02-07 18:17:28 +0100 |
|---|---|---|
| committer | Florian Diebold <flodiebold@gmail.com> | 2022-02-07 18:17:28 +0100 |
| commit | b9c5d23f69ab45f6bcd16c8f83317ed2c0a4b1a8 (patch) | |
| tree | 9a863bcdfefcad3cec892ec2333b33fbc873ea90 | |
| parent | cff209f1520e8ac0270a71814f993bda74668203 (diff) | |
| download | rust-b9c5d23f69ab45f6bcd16c8f83317ed2c0a4b1a8.tar.gz rust-b9c5d23f69ab45f6bcd16c8f83317ed2c0a4b1a8.zip | |
Simplify a bit
| -rw-r--r-- | crates/mbe/src/syntax_bridge.rs | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index b46e9594665..d5639cadc4d 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -484,12 +484,12 @@ impl Convertor { fn new( node: &SyntaxNode, global_offset: TextSize, - replace: FxHashMap<SyntaxNode, Vec<SyntheticToken>>, - append: FxHashMap<SyntaxNode, Vec<SyntheticToken>>, + mut replace: FxHashMap<SyntaxNode, Vec<SyntheticToken>>, + mut append: FxHashMap<SyntaxNode, Vec<SyntheticToken>>, ) -> Convertor { let range = node.text_range(); let mut preorder = node.preorder_with_tokens(); - let (first, synthetic) = Self::next_token(&mut preorder, &replace, &append); + let (first, synthetic) = Self::next_token(&mut preorder, &mut replace, &mut append); Convertor { id_alloc: { TokenIdAlloc { map: TokenMap::default(), global_offset, next_id: 0 } }, current: first, @@ -504,19 +504,18 @@ impl Convertor { fn next_token( preorder: &mut PreorderWithTokens, - replace: &FxHashMap<SyntaxNode, Vec<SyntheticToken>>, - append: &FxHashMap<SyntaxNode, Vec<SyntheticToken>>, + replace: &mut FxHashMap<SyntaxNode, Vec<SyntheticToken>>, + append: &mut FxHashMap<SyntaxNode, Vec<SyntheticToken>>, ) -> (Option<SyntaxToken>, Vec<SyntheticToken>) { while let Some(ev) = preorder.next() { let ele = match ev { WalkEvent::Enter(ele) => ele, WalkEvent::Leave(SyntaxElement::Node(node)) => { - if let Some(v) = append.get(&node) { + if let Some(mut v) = append.remove(&node) { eprintln!("after {:?}, appending {:?}", node, v); if !v.is_empty() { - let mut reversed = v.clone(); - reversed.reverse(); - return (None, reversed); + v.reverse(); + return (None, v); } } continue; @@ -526,13 +525,12 @@ impl Convertor { match ele { SyntaxElement::Token(t) => return (Some(t), Vec::new()), SyntaxElement::Node(node) => { - if let Some(v) = replace.get(&node) { + if let Some(mut v) = replace.remove(&node) { preorder.skip_subtree(); eprintln!("replacing {:?} by {:?}", node, v); if !v.is_empty() { - let mut reversed = v.clone(); - reversed.reverse(); - return (None, reversed); + v.reverse(); + return (None, v); } } } @@ -603,7 +601,7 @@ impl TokenConvertor for Convertor { if let Some(synth_token) = self.current_synthetic.pop() { if self.current_synthetic.is_empty() { let (new_current, new_synth) = - Self::next_token(&mut self.preorder, &self.replace, &self.append); + Self::next_token(&mut self.preorder, &mut self.replace, &mut self.append); self.current = new_current; self.current_synthetic = new_synth; } @@ -616,7 +614,7 @@ impl TokenConvertor for Convertor { return None; } let (new_current, new_synth) = - Self::next_token(&mut self.preorder, &self.replace, &self.append); + Self::next_token(&mut self.preorder, &mut self.replace, &mut self.append); self.current = new_current; self.current_synthetic = new_synth; let token = if curr.kind().is_punct() { |
