Skip to content

Commit 5901dfd

Browse files
committed
Auto merge of rust-lang#12224 - Veykril:anno-redundant, r=Veykril
internal: Remove redundant offset data in annotations cc rust-lang/rust-analyzer#12221
2 parents 3a69bfd + ca46c68 commit 5901dfd

File tree

3 files changed

+84
-152
lines changed

3 files changed

+84
-152
lines changed

crates/ide/src/annotations.rs

+72-130
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ pub struct Annotation {
3030
#[derive(Debug)]
3131
pub enum AnnotationKind {
3232
Runnable(Runnable),
33-
HasImpls { position: FilePosition, data: Option<Vec<NavigationTarget>> },
34-
HasReferences { position: FilePosition, data: Option<Vec<FileRange>> },
33+
HasImpls { file_id: FileId, data: Option<Vec<NavigationTarget>> },
34+
HasReferences { file_id: FileId, data: Option<Vec<FileRange>> },
3535
}
3636

3737
pub struct AnnotationConfig {
@@ -83,10 +83,7 @@ pub(crate) fn annotations(
8383
.for_each(|range| {
8484
annotations.push(Annotation {
8585
range,
86-
kind: AnnotationKind::HasReferences {
87-
position: FilePosition { file_id, offset: range.start() },
88-
data: None,
89-
},
86+
kind: AnnotationKind::HasReferences { file_id, data: None },
9087
})
9188
})
9289
}
@@ -107,27 +104,19 @@ pub(crate) fn annotations(
107104
_ => None,
108105
};
109106

110-
let (range, offset) = match range {
111-
Some(range) => (range, range.start()),
107+
let range = match range {
108+
Some(range) => range,
112109
None => return,
113110
};
114111

115112
if config.annotate_impls && !matches!(def, Definition::Const(_)) {
116-
annotations.push(Annotation {
117-
range,
118-
kind: AnnotationKind::HasImpls {
119-
position: FilePosition { file_id, offset },
120-
data: None,
121-
},
122-
});
113+
annotations
114+
.push(Annotation { range, kind: AnnotationKind::HasImpls { file_id, data: None } });
123115
}
124116
if config.annotate_references {
125117
annotations.push(Annotation {
126118
range,
127-
kind: AnnotationKind::HasReferences {
128-
position: FilePosition { file_id, offset },
129-
data: None,
130-
},
119+
kind: AnnotationKind::HasReferences { file_id, data: None },
131120
});
132121
}
133122

@@ -149,10 +138,7 @@ pub(crate) fn annotations(
149138
annotations.extend(find_all_methods(db, file_id).into_iter().map(
150139
|FileRange { file_id, range }| Annotation {
151140
range,
152-
kind: AnnotationKind::HasReferences {
153-
position: FilePosition { file_id, offset: range.start() },
154-
data: None,
155-
},
141+
kind: AnnotationKind::HasReferences { file_id, data: None },
156142
},
157143
));
158144
}
@@ -161,12 +147,19 @@ pub(crate) fn annotations(
161147
}
162148

163149
pub(crate) fn resolve_annotation(db: &RootDatabase, mut annotation: Annotation) -> Annotation {
164-
match &mut annotation.kind {
165-
AnnotationKind::HasImpls { position, data } => {
166-
*data = goto_implementation(db, *position).map(|range| range.info);
150+
match annotation.kind {
151+
AnnotationKind::HasImpls { file_id, ref mut data } => {
152+
*data =
153+
goto_implementation(db, FilePosition { file_id, offset: annotation.range.start() })
154+
.map(|range| range.info);
167155
}
168-
AnnotationKind::HasReferences { position, data } => {
169-
*data = find_all_refs(&Semantics::new(db), *position, None).map(|result| {
156+
AnnotationKind::HasReferences { file_id, ref mut data } => {
157+
*data = find_all_refs(
158+
&Semantics::new(db),
159+
FilePosition { file_id, offset: annotation.range.start() },
160+
None,
161+
)
162+
.map(|result| {
170163
result
171164
.into_iter()
172165
.flat_map(|res| res.references)
@@ -254,12 +247,9 @@ fn main() {
254247
Annotation {
255248
range: 6..10,
256249
kind: HasReferences {
257-
position: FilePosition {
258-
file_id: FileId(
259-
0,
260-
),
261-
offset: 6,
262-
},
250+
file_id: FileId(
251+
0,
252+
),
263253
data: Some(
264254
[
265255
FileRange {
@@ -275,12 +265,9 @@ fn main() {
275265
Annotation {
276266
range: 30..36,
277267
kind: HasReferences {
278-
position: FilePosition {
279-
file_id: FileId(
280-
0,
281-
),
282-
offset: 30,
283-
},
268+
file_id: FileId(
269+
0,
270+
),
284271
data: Some(
285272
[],
286273
),
@@ -289,12 +276,9 @@ fn main() {
289276
Annotation {
290277
range: 53..57,
291278
kind: HasReferences {
292-
position: FilePosition {
293-
file_id: FileId(
294-
0,
295-
),
296-
offset: 53,
297-
},
279+
file_id: FileId(
280+
0,
281+
),
298282
data: Some(
299283
[],
300284
),
@@ -339,12 +323,9 @@ fn main() {
339323
Annotation {
340324
range: 7..11,
341325
kind: HasImpls {
342-
position: FilePosition {
343-
file_id: FileId(
344-
0,
345-
),
346-
offset: 7,
347-
},
326+
file_id: FileId(
327+
0,
328+
),
348329
data: Some(
349330
[],
350331
),
@@ -353,12 +334,9 @@ fn main() {
353334
Annotation {
354335
range: 7..11,
355336
kind: HasReferences {
356-
position: FilePosition {
357-
file_id: FileId(
358-
0,
359-
),
360-
offset: 7,
361-
},
337+
file_id: FileId(
338+
0,
339+
),
362340
data: Some(
363341
[
364342
FileRange {
@@ -374,12 +352,9 @@ fn main() {
374352
Annotation {
375353
range: 17..21,
376354
kind: HasReferences {
377-
position: FilePosition {
378-
file_id: FileId(
379-
0,
380-
),
381-
offset: 17,
382-
},
355+
file_id: FileId(
356+
0,
357+
),
383358
data: Some(
384359
[],
385360
),
@@ -428,12 +403,9 @@ fn main() {
428403
Annotation {
429404
range: 7..11,
430405
kind: HasImpls {
431-
position: FilePosition {
432-
file_id: FileId(
433-
0,
434-
),
435-
offset: 7,
436-
},
406+
file_id: FileId(
407+
0,
408+
),
437409
data: Some(
438410
[
439411
NavigationTarget {
@@ -452,12 +424,9 @@ fn main() {
452424
Annotation {
453425
range: 7..11,
454426
kind: HasReferences {
455-
position: FilePosition {
456-
file_id: FileId(
457-
0,
458-
),
459-
offset: 7,
460-
},
427+
file_id: FileId(
428+
0,
429+
),
461430
data: Some(
462431
[
463432
FileRange {
@@ -479,12 +448,9 @@ fn main() {
479448
Annotation {
480449
range: 20..31,
481450
kind: HasImpls {
482-
position: FilePosition {
483-
file_id: FileId(
484-
0,
485-
),
486-
offset: 20,
487-
},
451+
file_id: FileId(
452+
0,
453+
),
488454
data: Some(
489455
[
490456
NavigationTarget {
@@ -503,12 +469,9 @@ fn main() {
503469
Annotation {
504470
range: 20..31,
505471
kind: HasReferences {
506-
position: FilePosition {
507-
file_id: FileId(
508-
0,
509-
),
510-
offset: 20,
511-
},
472+
file_id: FileId(
473+
0,
474+
),
512475
data: Some(
513476
[
514477
FileRange {
@@ -524,12 +487,9 @@ fn main() {
524487
Annotation {
525488
range: 69..73,
526489
kind: HasReferences {
527-
position: FilePosition {
528-
file_id: FileId(
529-
0,
530-
),
531-
offset: 69,
532-
},
490+
file_id: FileId(
491+
0,
492+
),
533493
data: Some(
534494
[],
535495
),
@@ -570,12 +530,9 @@ fn main() {}
570530
Annotation {
571531
range: 3..7,
572532
kind: HasReferences {
573-
position: FilePosition {
574-
file_id: FileId(
575-
0,
576-
),
577-
offset: 3,
578-
},
533+
file_id: FileId(
534+
0,
535+
),
579536
data: Some(
580537
[],
581538
),
@@ -624,12 +581,9 @@ fn main() {
624581
Annotation {
625582
range: 7..11,
626583
kind: HasImpls {
627-
position: FilePosition {
628-
file_id: FileId(
629-
0,
630-
),
631-
offset: 7,
632-
},
584+
file_id: FileId(
585+
0,
586+
),
633587
data: Some(
634588
[
635589
NavigationTarget {
@@ -648,12 +602,9 @@ fn main() {
648602
Annotation {
649603
range: 7..11,
650604
kind: HasReferences {
651-
position: FilePosition {
652-
file_id: FileId(
653-
0,
654-
),
655-
offset: 7,
656-
},
605+
file_id: FileId(
606+
0,
607+
),
657608
data: Some(
658609
[
659610
FileRange {
@@ -675,12 +626,9 @@ fn main() {
675626
Annotation {
676627
range: 33..44,
677628
kind: HasReferences {
678-
position: FilePosition {
679-
file_id: FileId(
680-
0,
681-
),
682-
offset: 33,
683-
},
629+
file_id: FileId(
630+
0,
631+
),
684632
data: Some(
685633
[
686634
FileRange {
@@ -696,12 +644,9 @@ fn main() {
696644
Annotation {
697645
range: 61..65,
698646
kind: HasReferences {
699-
position: FilePosition {
700-
file_id: FileId(
701-
0,
702-
),
703-
offset: 61,
704-
},
647+
file_id: FileId(
648+
0,
649+
),
705650
data: Some(
706651
[],
707652
),
@@ -795,12 +740,9 @@ mod tests {
795740
Annotation {
796741
range: 3..7,
797742
kind: HasReferences {
798-
position: FilePosition {
799-
file_id: FileId(
800-
0,
801-
),
802-
offset: 3,
803-
},
743+
file_id: FileId(
744+
0,
745+
),
804746
data: Some(
805747
[],
806748
),

crates/rust-analyzer/src/from_proto.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,7 @@ pub(crate) fn annotation(
101101

102102
Ok(Annotation {
103103
range: text_range(&line_index, code_lens.range)?,
104-
kind: AnnotationKind::HasImpls {
105-
position: file_position(snap, params.text_document_position_params)?,
106-
data: None,
107-
},
104+
kind: AnnotationKind::HasImpls { file_id, data: None },
108105
})
109106
}
110107
lsp_ext::CodeLensResolveData::References(params) => {
@@ -113,10 +110,7 @@ pub(crate) fn annotation(
113110

114111
Ok(Annotation {
115112
range: text_range(&line_index, code_lens.range)?,
116-
kind: AnnotationKind::HasReferences {
117-
position: file_position(snap, params)?,
118-
data: None,
119-
},
113+
kind: AnnotationKind::HasReferences { file_id, data: None },
120114
})
121115
}
122116
}

0 commit comments

Comments
 (0)