about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMoritz Vetter <mv@3yourmind.com>2022-02-24 21:29:26 +0100
committerMoritz Vetter <mv@3yourmind.com>2022-02-24 21:29:45 +0100
commit71d158b6bab007f56b9f80c56125063a62d06fd4 (patch)
tree02fb8068534878848e494366548b921dff1335a5
parent8848186213bb7f54f034c2f6f5fab724bfc3b451 (diff)
downloadrust-71d158b6bab007f56b9f80c56125063a62d06fd4.tar.gz
rust-71d158b6bab007f56b9f80c56125063a62d06fd4.zip
refactor(11422): make number unsigned, nest enums into each other
-rw-r--r--crates/ide_db/src/helpers.rs24
1 files changed, 11 insertions, 13 deletions
diff --git a/crates/ide_db/src/helpers.rs b/crates/ide_db/src/helpers.rs
index 944b69c1acf..fcad1729848 100644
--- a/crates/ide_db/src/helpers.rs
+++ b/crates/ide_db/src/helpers.rs
@@ -247,7 +247,7 @@ fn eq_label_lt(lt1: &Option<ast::Lifetime>, lt2: &Option<ast::Lifetime>) -> bool
 
 struct TreeWithDepthIterator {
     preorder: Preorder<RustLanguage>,
-    depth: i32,
+    depth: u32,
 }
 
 impl TreeWithDepthIterator {
@@ -258,33 +258,31 @@ impl TreeWithDepthIterator {
 }
 
 impl<'a> Iterator for TreeWithDepthIterator {
-    type Item = (ast::Expr, i32);
+    type Item = (ast::Expr, u32);
 
     fn next(&mut self) -> Option<Self::Item> {
-        while let Some((event, expr)) = self.preorder.find_map(|ev| match ev {
-            WalkEvent::Enter(it) => Some(WalkEvent::Enter(())).zip(ast::Expr::cast(it)),
-            WalkEvent::Leave(it) => Some(WalkEvent::Leave(())).zip(ast::Expr::cast(it)),
+        while let Some(event) = self.preorder.find_map(|ev| match ev {
+            WalkEvent::Enter(it) => ast::Expr::cast(it).map(WalkEvent::Enter),
+            WalkEvent::Leave(it) => ast::Expr::cast(it).map(WalkEvent::Leave),
         }) {
-            match (event, expr) {
-                (
-                    WalkEvent::Enter(_),
+            match event {
+                WalkEvent::Enter(
                     ast::Expr::LoopExpr(_) | ast::Expr::WhileExpr(_) | ast::Expr::ForExpr(_),
                 ) => {
                     self.depth += 1;
                 }
-                (
-                    WalkEvent::Leave(_),
+                WalkEvent::Leave(
                     ast::Expr::LoopExpr(_) | ast::Expr::WhileExpr(_) | ast::Expr::ForExpr(_),
                 ) => {
                     self.depth -= 1;
                 }
-                (WalkEvent::Enter(_), ast::Expr::BlockExpr(e)) if e.label().is_some() => {
+                WalkEvent::Enter(ast::Expr::BlockExpr(e)) if e.label().is_some() => {
                     self.depth += 1;
                 }
-                (WalkEvent::Leave(_), ast::Expr::BlockExpr(e)) if e.label().is_some() => {
+                WalkEvent::Leave(ast::Expr::BlockExpr(e)) if e.label().is_some() => {
                     self.depth -= 1;
                 }
-                (WalkEvent::Enter(_), expr) => return Some((expr, self.depth)),
+                WalkEvent::Enter(expr) => return Some((expr, self.depth)),
                 _ => (),
             }
         }