@@ -5,7 +5,7 @@ use ra_ide_db::RootDatabase;
5
5
use ra_syntax:: {
6
6
algo, AstNode , NodeOrToken , SourceFile ,
7
7
SyntaxKind :: { RAW_STRING , STRING } ,
8
- SyntaxToken , TextRange ,
8
+ SyntaxToken , TextRange , TextUnit ,
9
9
} ;
10
10
11
11
pub use ra_db:: FileId ;
@@ -56,19 +56,23 @@ fn syntax_tree_for_token(node: &SyntaxToken, text_range: TextRange) -> Option<St
56
56
let start = text_range. start ( ) - node_range. start ( ) ;
57
57
58
58
// how many characters we have selected
59
- let len = text_range. len ( ) . to_usize ( ) ;
59
+ let len = text_range. len ( ) ;
60
60
61
- let node_len = node_range. len ( ) . to_usize ( ) ;
61
+ let node_len = node_range. len ( ) ;
62
62
63
- let start = start. to_usize ( ) ;
63
+ let start = start;
64
64
65
65
// We want to cap our length
66
66
let len = len. min ( node_len) ;
67
67
68
68
// 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
+ } ;
70
74
71
- let text = & text[ start.. end] ;
75
+ let text = & text[ TextRange :: from_to ( start, end) ] ;
72
76
73
77
// Remove possible extra string quotes from the start
74
78
// and the end of the string
0 commit comments