@@ -5,7 +5,7 @@ use ra_ide_db::RootDatabase;
55use ra_syntax:: {
66 algo, AstNode , NodeOrToken , SourceFile ,
77 SyntaxKind :: { RAW_STRING , STRING } ,
8- SyntaxToken , TextRange ,
8+ SyntaxToken , TextRange , TextUnit ,
99} ;
1010
1111pub use ra_db:: FileId ;
@@ -56,19 +56,23 @@ fn syntax_tree_for_token(node: &SyntaxToken, text_range: TextRange) -> Option<St
5656 let start = text_range. start ( ) - node_range. start ( ) ;
5757
5858 // how many characters we have selected
59- let len = text_range. len ( ) . to_usize ( ) ;
59+ let len = text_range. len ( ) ;
6060
61- let node_len = node_range. len ( ) . to_usize ( ) ;
61+ let node_len = node_range. len ( ) ;
6262
63- let start = start. to_usize ( ) ;
63+ let start = start;
6464
6565 // We want to cap our length
6666 let len = len. min ( node_len) ;
6767
6868 // Ensure our slice is inside the actual string
69- let end = if start + len < text. len ( ) { start + len } else { text. len ( ) - start } ;
69+ let end = if start + len < TextUnit :: of_str ( & text) {
70+ start + len
71+ } else {
72+ TextUnit :: of_str ( & text) - start
73+ } ;
7074
71- let text = & text[ start.. end] ;
75+ let text = & text[ TextRange :: from_to ( start, end) ] ;
7276
7377 // Remove possible extra string quotes from the start
7478 // and the end of the string
0 commit comments