@@ -48,7 +48,9 @@ pub(super) fn expand_and_analyze(
48
48
// make the offset point to the start of the original token, as that is what the
49
49
// intermediate offsets calculated in expansion always points to
50
50
let offset = offset - relative_offset;
51
- let expansion = expand ( sema, original_file, speculative_file, offset, fake_ident_token) ;
51
+ let expansion =
52
+ expand ( sema, original_file, speculative_file, offset, fake_ident_token, relative_offset) ;
53
+
52
54
// add the relative offset back, so that left_biased finds the proper token
53
55
let offset = expansion. offset + relative_offset;
54
56
let token = expansion. original_file . token_at_offset ( offset) . left_biased ( ) ?;
@@ -67,6 +69,7 @@ fn expand(
67
69
mut speculative_file : SyntaxNode ,
68
70
mut offset : TextSize ,
69
71
mut fake_ident_token : SyntaxToken ,
72
+ relative_offset : TextSize ,
70
73
) -> ExpansionResult {
71
74
let _p = profile:: span ( "CompletionContext::expand" ) ;
72
75
let mut derive_ctx = None ;
@@ -97,7 +100,7 @@ fn expand(
97
100
// successful expansions
98
101
( Some ( actual_expansion) , Some ( ( fake_expansion, fake_mapped_token) ) ) => {
99
102
let new_offset = fake_mapped_token. text_range ( ) . start ( ) ;
100
- if new_offset > actual_expansion. text_range ( ) . end ( ) {
103
+ if new_offset + relative_offset > actual_expansion. text_range ( ) . end ( ) {
101
104
// offset outside of bounds from the original expansion,
102
105
// stop here to prevent problems from happening
103
106
break ' expansion;
@@ -176,7 +179,7 @@ fn expand(
176
179
// successful expansions
177
180
( Some ( actual_expansion) , Some ( ( fake_expansion, fake_mapped_token) ) ) => {
178
181
let new_offset = fake_mapped_token. text_range ( ) . start ( ) ;
179
- if new_offset > actual_expansion. text_range ( ) . end ( ) {
182
+ if new_offset + relative_offset > actual_expansion. text_range ( ) . end ( ) {
180
183
// offset outside of bounds from the original expansion,
181
184
// stop here to prevent problems from happening
182
185
break ' expansion;
0 commit comments