]> git.lizzy.rs Git - rust.git/commitdiff
Minor
authorAleksey Kladov <aleksey.kladov@gmail.com>
Thu, 13 Aug 2020 09:41:20 +0000 (11:41 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Thu, 13 Aug 2020 09:41:39 +0000 (11:41 +0200)
crates/ra_assists/src/handlers/replace_if_let_with_match.rs
crates/ra_assists/src/handlers/unwrap_block.rs
crates/ra_assists/src/utils.rs
crates/ra_fmt/src/lib.rs
crates/ra_ide/src/join_lines.rs

index 2442f049b655d45ca91bf0e64e54c26d4ce7aa0d..79097621e645f0277db4eabd3bc978167cd88d57 100644 (file)
@@ -1,4 +1,3 @@
-use ra_fmt::unwrap_trivial_block;
 use syntax::{
     ast::{
         self,
@@ -8,7 +7,10 @@
     AstNode,
 };
 
-use crate::{utils::TryEnum, AssistContext, AssistId, AssistKind, Assists};
+use crate::{
+    utils::{unwrap_trivial_block, TryEnum},
+    AssistContext, AssistId, AssistKind, Assists,
+};
 
 // Assist: replace_if_let_with_match
 //
index 2879090b86767de478c0662a62f400716578799b..3851aeb3e7459fc0a8c101293588fb24ec1a3006 100644 (file)
@@ -1,4 +1,3 @@
-use ra_fmt::unwrap_trivial_block;
 use syntax::{
     ast::{
         self,
@@ -7,7 +6,7 @@
     AstNode, TextRange, T,
 };
 
-use crate::{AssistContext, AssistId, AssistKind, Assists};
+use crate::{utils::unwrap_trivial_block, AssistContext, AssistId, AssistKind, Assists};
 
 // Assist: unwrap_block
 //
index 6d85661c4619fa2d3297fe6b3982b38a69dcab32..a20453dd8747b226abe6a59ff382de78e316ea4f 100644 (file)
@@ -4,6 +4,7 @@
 use std::{iter, ops};
 
 use hir::{Adt, Crate, Enum, ScopeDef, Semantics, Trait, Type};
+use itertools::Itertools;
 use ra_ide_db::RootDatabase;
 use rustc_hash::FxHashSet;
 use syntax::{
 
 pub(crate) use insert_use::{find_insert_use_container, insert_use_statement};
 
+pub(crate) fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr {
+    extract_trivial_expression(&block)
+        .filter(|expr| !expr.syntax().text().contains_char('\n'))
+        .unwrap_or_else(|| block.into())
+}
+
+pub fn extract_trivial_expression(block: &ast::BlockExpr) -> Option<ast::Expr> {
+    let has_anything_else = |thing: &SyntaxNode| -> bool {
+        let mut non_trivial_children =
+            block.syntax().children_with_tokens().filter(|it| match it.kind() {
+                WHITESPACE | T!['{'] | T!['}'] => false,
+                _ => it.as_node() != Some(thing),
+            });
+        non_trivial_children.next().is_some()
+    };
+
+    if let Some(expr) = block.expr() {
+        if has_anything_else(expr.syntax()) {
+            return None;
+        }
+        return Some(expr);
+    }
+    // Unwrap `{ continue; }`
+    let (stmt,) = block.statements().next_tuple()?;
+    if let ast::Stmt::ExprStmt(expr_stmt) = stmt {
+        if has_anything_else(expr_stmt.syntax()) {
+            return None;
+        }
+        let expr = expr_stmt.expr()?;
+        match expr.syntax().kind() {
+            CONTINUE_EXPR | BREAK_EXPR | RETURN_EXPR => return Some(expr),
+            _ => (),
+        }
+    }
+    None
+}
+
 #[derive(Clone, Copy, Debug)]
 pub(crate) enum Cursor<'a> {
     Replace(&'a SyntaxNode),
index 397a3c3ae0d80369bc7a29237f33a6ea7919e9cc..d0004654b3b6c1b8ca0eb206f9128fdf69660a38 100644 (file)
@@ -2,9 +2,8 @@
 
 use std::iter::successors;
 
-use itertools::Itertools;
 use syntax::{
-    ast::{self, AstNode, AstToken},
+    ast::{self, AstToken},
     SmolStr, SyntaxKind,
     SyntaxKind::*,
     SyntaxNode, SyntaxToken, T,
@@ -30,43 +29,6 @@ fn prev_tokens(token: SyntaxToken) -> impl Iterator<Item = SyntaxToken> {
     successors(token.prev_token(), |token| token.prev_token())
 }
 
-pub fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr {
-    extract_trivial_expression(&block)
-        .filter(|expr| !expr.syntax().text().contains_char('\n'))
-        .unwrap_or_else(|| block.into())
-}
-
-pub fn extract_trivial_expression(block: &ast::BlockExpr) -> Option<ast::Expr> {
-    let has_anything_else = |thing: &SyntaxNode| -> bool {
-        let mut non_trivial_children =
-            block.syntax().children_with_tokens().filter(|it| match it.kind() {
-                WHITESPACE | T!['{'] | T!['}'] => false,
-                _ => it.as_node() != Some(thing),
-            });
-        non_trivial_children.next().is_some()
-    };
-
-    if let Some(expr) = block.expr() {
-        if has_anything_else(expr.syntax()) {
-            return None;
-        }
-        return Some(expr);
-    }
-    // Unwrap `{ continue; }`
-    let (stmt,) = block.statements().next_tuple()?;
-    if let ast::Stmt::ExprStmt(expr_stmt) = stmt {
-        if has_anything_else(expr_stmt.syntax()) {
-            return None;
-        }
-        let expr = expr_stmt.expr()?;
-        match expr.syntax().kind() {
-            CONTINUE_EXPR | BREAK_EXPR | RETURN_EXPR => return Some(expr),
-            _ => (),
-        }
-    }
-    None
-}
-
 pub fn compute_ws(left: SyntaxKind, right: SyntaxKind) -> &'static str {
     match left {
         T!['('] | T!['['] => return "",
index 35cec87f670ab63c01f5b768a61a7e54b76dc4b3..574ce219d9388604e52f780188f2934f2d26801b 100644 (file)
@@ -1,5 +1,6 @@
 use itertools::Itertools;
-use ra_fmt::{compute_ws, extract_trivial_expression};
+use ra_assists::utils::extract_trivial_expression;
+use ra_fmt::compute_ws;
 use syntax::{
     algo::{find_covering_element, non_trivia_sibling},
     ast::{self, AstNode, AstToken},