]> git.lizzy.rs Git - rust.git/commitdiff
Support standalone comments
authorJeroen Vannevel <jer_vannevel@outlook.com>
Sat, 22 Jan 2022 12:05:35 +0000 (12:05 +0000)
committerJeroen Vannevel <jer_vannevel@outlook.com>
Sat, 22 Jan 2022 12:08:32 +0000 (12:08 +0000)
crates/ide_assists/src/handlers/extract_function.rs

index a4d931ab3bbe7b7a698d9b75cc60d8233199d974..d3b239bd73f68453cd594554f84555dea11d812f 100644 (file)
@@ -22,9 +22,8 @@
         edit::{AstNodeEdit, IndentLevel},
         AstNode,
     },
-    match_ast, ted, SyntaxElement,
-    SyntaxKind::{self, COMMENT},
-    SyntaxNode, SyntaxToken, TextRange, TextSize, TokenAtOffset, WalkEvent, T,
+    match_ast, ted, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxToken, TextRange, TextSize,
+    TokenAtOffset, WalkEvent, T,
 };
 
 use crate::{
@@ -63,13 +62,7 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext) -> Option
         return None;
     }
 
-    let node = ctx.covering_element();
-    if node.kind() == COMMENT {
-        cov_mark::hit!(extract_function_in_comment_is_not_applicable);
-        return None;
-    }
-
-    let node = match node {
+    let node = match ctx.covering_element() {
         syntax::NodeOrToken::Node(n) => n,
         syntax::NodeOrToken::Token(t) => t.parent()?,
     };
@@ -2207,12 +2200,6 @@ fn $0fun_name(n: u32) -> u32 {
         )
     }
 
-    #[test]
-    fn in_comment_is_not_applicable() {
-        cov_mark::check!(extract_function_in_comment_is_not_applicable);
-        check_assist_not_applicable(extract_function, r"fn main() { 1 + /* $0comment$0 */ 1; }");
-    }
-
     #[test]
     fn part_of_expr_stmt() {
         check_assist(
@@ -4572,6 +4559,68 @@ fn $0fun_name() {
     /* a comment */
     let x = 0;
 }
+"#,
+        );
+    }
+
+    #[test]
+    fn extract_function_long_form_comment_multiline() {
+        check_assist(
+            extract_function,
+            r#"
+fn func() {
+    let i = 0;
+    $0/* 
+    a 
+    comment 
+    */
+    let x = 0;$0
+}
+"#,
+            r#"
+fn func() {
+    let i = 0;
+    fun_name();
+}
+
+fn $0fun_name() {
+    /* 
+    a 
+    comment 
+    */
+    let x = 0;
+}
+"#,
+        );
+    }
+
+    #[test]
+    fn extract_function_long_form_comment_multiline_alone() {
+        check_assist(
+            extract_function,
+            r#"
+fn func() {
+    let i = 0;
+    $0/* 
+    a 
+    comment 
+    */
+    $0let x = 0;
+}
+"#,
+            r#"
+fn func() {
+    let i = 0;
+    fun_name();
+    let x = 0;
+}
+
+fn $0fun_name() {
+    /* 
+    a 
+    comment 
+    */
+}
 "#,
         );
     }