11use std:: borrow:: Cow ;
22
3- use syntax:: {
4- ast:: { self , HasQuotes , HasStringValue } ,
5- AstToken ,
6- SyntaxKind :: { RAW_STRING , STRING } ,
7- TextRange , TextSize ,
8- } ;
3+ use syntax:: { ast, AstToken , TextRange , TextSize } ;
94use test_utils:: mark;
105
116use crate :: { AssistContext , AssistId , AssistKind , Assists } ;
@@ -26,7 +21,10 @@ use crate::{AssistContext, AssistId, AssistKind, Assists};
2621// }
2722// ```
2823pub ( crate ) fn make_raw_string ( acc : & mut Assists , ctx : & AssistContext ) -> Option < ( ) > {
29- let token = ctx. find_token_at_offset ( STRING ) . and_then ( ast:: String :: cast) ?;
24+ let token = ctx. find_token_at_offset :: < ast:: String > ( ) ?;
25+ if token. is_raw ( ) {
26+ return None ;
27+ }
3028 let value = token. value ( ) ?;
3129 let target = token. syntax ( ) . text_range ( ) ;
3230 acc. add (
@@ -65,7 +63,10 @@ pub(crate) fn make_raw_string(acc: &mut Assists, ctx: &AssistContext) -> Option<
6563// }
6664// ```
6765pub ( crate ) fn make_usual_string ( acc : & mut Assists , ctx : & AssistContext ) -> Option < ( ) > {
68- let token = ctx. find_token_at_offset ( RAW_STRING ) . and_then ( ast:: RawString :: cast) ?;
66+ let token = ctx. find_token_at_offset :: < ast:: String > ( ) ?;
67+ if !token. is_raw ( ) {
68+ return None ;
69+ }
6970 let value = token. value ( ) ?;
7071 let target = token. syntax ( ) . text_range ( ) ;
7172 acc. add (
@@ -104,11 +105,15 @@ pub(crate) fn make_usual_string(acc: &mut Assists, ctx: &AssistContext) -> Optio
104105// }
105106// ```
106107pub ( crate ) fn add_hash ( acc : & mut Assists , ctx : & AssistContext ) -> Option < ( ) > {
107- let token = ctx. find_token_at_offset ( RAW_STRING ) ?;
108- let target = token. text_range ( ) ;
108+ let token = ctx. find_token_at_offset :: < ast:: String > ( ) ?;
109+ if !token. is_raw ( ) {
110+ return None ;
111+ }
112+ let text_range = token. syntax ( ) . text_range ( ) ;
113+ let target = text_range;
109114 acc. add ( AssistId ( "add_hash" , AssistKind :: Refactor ) , "Add #" , target, |edit| {
110- edit. insert ( token . text_range ( ) . start ( ) + TextSize :: of ( 'r' ) , "#" ) ;
111- edit. insert ( token . text_range ( ) . end ( ) , "#" ) ;
115+ edit. insert ( text_range. start ( ) + TextSize :: of ( 'r' ) , "#" ) ;
116+ edit. insert ( text_range. end ( ) , "#" ) ;
112117 } )
113118}
114119
@@ -128,7 +133,10 @@ pub(crate) fn add_hash(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
128133// }
129134// ```
130135pub ( crate ) fn remove_hash ( acc : & mut Assists , ctx : & AssistContext ) -> Option < ( ) > {
131- let token = ctx. find_token_at_offset ( RAW_STRING ) . and_then ( ast:: RawString :: cast) ?;
136+ let token = ctx. find_token_at_offset :: < ast:: String > ( ) ?;
137+ if !token. is_raw ( ) {
138+ return None ;
139+ }
132140
133141 let text = token. text ( ) . as_str ( ) ;
134142 if !text. starts_with ( "r#" ) && text. ends_with ( '#' ) {
0 commit comments