]> git.lizzy.rs Git - rust.git/commitdiff
feat(assists): Keep only one version of make_raw_string
authorGeobert Quach <geobert@protonmail.com>
Sun, 29 Sep 2019 18:14:19 +0000 (19:14 +0100)
committerGeobert Quach <geobert@protonmail.com>
Sun, 29 Sep 2019 18:16:59 +0000 (19:16 +0100)
crates/ra_assists/src/assists/raw_string.rs
crates/ra_assists/src/lib.rs
docs/user/features.md

index fe396806bc9d89ed5dae7c75b12a18798124b19c..e57f24e7c8d161d6aadc20f2b1b9081a98095dc5 100644 (file)
@@ -5,27 +5,12 @@
 use crate::{Assist, AssistCtx, AssistId};
 
 pub(crate) fn make_raw_string(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
-    let literal = ctx.node_at_offset::<Literal>()?;
-    if literal.token().kind() != ra_syntax::SyntaxKind::STRING {
-        return None;
-    }
-    ctx.add_action(AssistId("make_raw_string"), "make raw string", |edit| {
-        edit.target(literal.syntax().text_range());
-        edit.insert(literal.syntax().text_range().start(), "r");
-    });
-    ctx.build()
-}
-
-pub(crate) fn make_raw_string_unescaped(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
     let literal = ctx.node_at_offset::<Literal>()?;
     if literal.token().kind() != ra_syntax::SyntaxKind::STRING {
         return None;
     }
     let token = literal.token();
     let text = token.text().as_str();
-    if !text.contains(&['\\', '\r'][..]) {
-        return None;
-    }
     let usual_string_range = find_usual_string_range(text)?;
     ctx.add_action(AssistId("make_raw_string"), "make raw string", |edit| {
         edit.target(literal.syntax().text_range());
@@ -43,7 +28,7 @@ pub(crate) fn make_raw_string_unescaped(mut ctx: AssistCtx<impl HirDatabase>) ->
         if error.is_err() {
             eprintln!("Error unescaping string");
         } else {
-            edit.replace(literal.syntax().text_range(), format!("r\"{}\"", unescaped));
+            edit.replace(literal.syntax().text_range(), format!("r#\"{}\"#", unescaped));
         }
     });
     ctx.build()
@@ -126,32 +111,15 @@ fn make_raw_string_target() {
             make_raw_string,
             r#"
             fn f() {
-                let s = <|>"random string";
+                let s = <|>"random\nstring";
             }
             "#,
-            r#""random string""#,
+            r#""random\nstring""#,
         );
     }
 
     #[test]
     fn make_raw_string_works() {
-        check_assist(
-            make_raw_string,
-            r#"
-            fn f() {
-                let s = <|>"random string";
-            }
-            "#,
-            r#"
-            fn f() {
-                let s = <|>r"random string";
-            }
-            "#,
-        )
-    }
-
-    #[test]
-    fn make_raw_string_with_escaped_works() {
         check_assist(
             make_raw_string,
             r#"
@@ -159,66 +127,29 @@ fn f() {
                 let s = <|>"random\nstring";
             }
             "#,
-            r#"
+            r##"
             fn f() {
-                let s = <|>r"random\nstring";
+                let s = <|>r#"random
+string"#;
             }
-            "#,
+            "##,
         )
     }
 
     #[test]
-    fn make_raw_string_not_works() {
-        check_assist_not_applicable(
-            make_raw_string,
-            r#"
-            fn f() {
-                let s = <|>r"random string";
-            }
-            "#,
-        );
-    }
-
-    #[test]
-    fn make_raw_string_unescaped_target() {
-        check_assist_target(
-            make_raw_string_unescaped,
-            r#"
-            fn f() {
-                let s = <|>"random\nstring";
-            }
-            "#,
-            r#""random\nstring""#,
-        );
-    }
-
-    #[test]
-    fn make_raw_string_unescaped_works() {
+    fn make_raw_string_nothing_to_unescape_works() {
         check_assist(
-            make_raw_string_unescaped,
-            r#"
-            fn f() {
-                let s = <|>"random\nstring";
-            }
-            "#,
+            make_raw_string,
             r#"
             fn f() {
-                let s = <|>r"random
-string";
+                let s = <|>"random string";
             }
             "#,
-        )
-    }
-
-    #[test]
-    fn make_raw_string_unescaped_dont_works() {
-        check_assist_not_applicable(
-            make_raw_string_unescaped,
-            r#"
+            r##"
             fn f() {
-                let s = <|>"random string";
+                let s = <|>r#"random string"#;
             }
-            "#,
+            "##,
         )
     }
 
index d1e2d32514d1fd9fdb0381da673912851f06152e..3ca3320f7aa2ddf26082fc3c3daad002b9678a97 100644 (file)
@@ -132,7 +132,6 @@ pub(crate) fn all<DB: HirDatabase>() -> &'static [fn(AssistCtx<DB>) -> Option<As
             move_bounds::move_bounds_to_where_clause,
             raw_string::add_hash,
             raw_string::make_raw_string,
-            raw_string::make_raw_string_unescaped,
             raw_string::make_usual_string,
             raw_string::remove_hash,
         ]
index fadd4cdf17d1e432e8f7466f3b009e9815a9eee3..23842f40929d5c6ac91734185c7ccf31b638e26d 100644 (file)
@@ -445,20 +445,6 @@ fn foo<T: u32, F: FnOnce(T) -> T>() {}
 fn foo<T, F>() where T: u32, F: FnOnce(T) -> T {}
 ```
 
-- Make raw string
-
-```rust
-// before:
-fn f() {
-    let s = <|>"abcd";
-}
-
-// after:
-fn f() {
-    let s = <|>r"abcd";
-}
-```
-
 - Make raw string unescaped
 
 ```rust
@@ -469,8 +455,8 @@ fn f() {
 
 // after:
 fn f() {
-    let s = <|>r"ab
-cd";
+    let s = <|>r#"ab
+cd"#;
 }
 ```