Skip to content

Commit e9901de

Browse files
committed
refactor(utils): share covering text range helper
1 parent c4af9d0 commit e9901de

8 files changed

Lines changed: 13 additions & 36 deletions

File tree

crates/ide/src/goto_declaration.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use hir::{file::HirFileId, semantics::Semantics};
22
use itertools::Itertools;
3-
use utils::line_index::TextRange;
3+
use utils::line_index::covering_range;
44

55
use crate::{
66
FilePosition, RangeInfo,
@@ -86,9 +86,3 @@ fn render_source_declaration_target(
8686

8787
Some(RangeInfo::new(range, navs))
8888
}
89-
90-
fn covering_range(ranges: &[TextRange]) -> Option<TextRange> {
91-
let start = ranges.iter().map(|range| range.start()).min()?;
92-
let end = ranges.iter().map(|range| range.end()).max()?;
93-
Some(TextRange::new(start, end))
94-
}

crates/ide/src/goto_definition.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use syntax::{
1010
SyntaxTokenWithParent, TokenKind,
1111
token::{TokenKindExt, pair_token},
1212
};
13-
use utils::line_index::{TextRange, TextSize};
13+
use utils::line_index::{TextRange, TextSize, covering_range};
1414
use vfs::FileId;
1515

1616
use crate::{
@@ -62,12 +62,6 @@ fn render_definition_target(
6262
Some(RangeInfo::new(range, navs.into_iter().unique().collect()))
6363
}
6464

65-
fn covering_range(ranges: &[TextRange]) -> Option<TextRange> {
66-
let start = ranges.iter().map(|range| range.start()).min()?;
67-
let end = ranges.iter().map(|range| range.end()).max()?;
68-
Some(TextRange::new(start, end))
69-
}
70-
7165
fn render_source_definition_target(
7266
db: &RootDb,
7367
file_id: FileId,

crates/ide/src/hover.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use syntax::{
1010
};
1111
use utils::{
1212
get::GetRef,
13-
line_index::{TextRange, TextSize},
13+
line_index::{TextRange, TextSize, covering_range},
1414
uniq_vec::UniqVec,
1515
};
1616
use vfs::FileId;
@@ -92,12 +92,6 @@ fn render_hover_target(
9292
})
9393
}
9494

95-
fn covering_range(ranges: &[TextRange]) -> Option<TextRange> {
96-
let start = ranges.iter().map(|range| range.start()).min()?;
97-
let end = ranges.iter().map(|range| range.end()).max()?;
98-
Some(TextRange::new(start, end))
99-
}
100-
10195
fn hover_for_source_target(
10296
sema: &Semantics<RootDb>,
10397
hir_file_id: HirFileId,

crates/ide/src/hover/macro_hover/expansion.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use hir::{
33
hir_def::macro_file::{MacroFileExpansion, macro_file_expansion, macro_files_at_offset},
44
preproc::{MacroReferenceDefinitions, macro_reference_definitions_at},
55
};
6-
use utils::line_index::{TextRange, TextSize};
6+
use utils::line_index::{TextRange, TextSize, covering_range};
77
use vfs::FileId;
88

99
use super::markup::{macro_expansion_source_fact, render_macro_expansion_header};
@@ -150,9 +150,3 @@ fn common_whitespace_prefix<'a>(left: &'a str, right: &'a str) -> &'a str {
150150
let end = left.bytes().zip(right.bytes()).take_while(|(left, right)| left == right).count();
151151
&left[..end]
152152
}
153-
154-
fn covering_range(ranges: &[TextRange]) -> Option<TextRange> {
155-
let start = ranges.iter().map(|range| range.start()).min()?;
156-
let end = ranges.iter().map(|range| range.end()).max()?;
157-
Some(TextRange::new(start, end))
158-
}

crates/ide/src/source_targets.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,5 @@ impl<'tree> SourceTargetProviderResult<'tree> {
246246
}
247247
}
248248

249-
fn covering_range(ranges: &[TextRange]) -> Option<TextRange> {
250-
let start = ranges.iter().map(|range| range.start()).min()?;
251-
let end = ranges.iter().map(|range| range.end()).max()?;
252-
Some(TextRange::new(start, end))
253-
}
254-
255249
#[cfg(test)]
256250
mod tests;

crates/ide/src/source_targets/preproc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ use hir::{
44
hir_def::macro_file::{ExpansionSourceHit, MacroFileId, Origin, SourceEmittedTokenId},
55
};
66
use syntax::{SyntaxElement, SyntaxNode, SyntaxTokenWithParent, TokenKind, WalkEvent};
7-
use utils::line_index::{TextRange, TextSize};
7+
use utils::line_index::{TextRange, TextSize, covering_range};
88
use vfs::FileId;
99

1010
use super::{
1111
PreprocTokenHit, SourceTarget, SourceTargetAlternatives, SourceTargetBlock,
12-
SourceTargetProviderResult, SourceTargetRequestCache, SourceTargetResolution, covering_range,
12+
SourceTargetProviderResult, SourceTargetRequestCache, SourceTargetResolution,
1313
macro_gate::source_macro_invocation_may_cover_offset, normal_syntax_source_target_at_offset,
1414
};
1515
use crate::db::root_db::RootDb;

crates/ide/src/source_targets/tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use syntax::{
33
SyntaxElement, SyntaxNode, SyntaxTree, SyntaxTreeOptions, WalkEvent, preproc::TokenOrigin,
44
token::TokenKindExt,
55
};
6+
use utils::line_index::covering_range;
67

78
use super::*;
89

crates/utils/src/line_index.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ use std::ops::Range;
55
use nohash_hasher::IntMap;
66
pub use text_size::{TextRange, TextSize};
77

8+
pub fn covering_range(ranges: &[TextRange]) -> Option<TextRange> {
9+
let start = ranges.iter().map(|range| range.start()).min()?;
10+
let end = ranges.iter().map(|range| range.end()).max()?;
11+
Some(TextRange::new(start, end))
12+
}
13+
814
/// `(line, column)` information in the native, UTF-8 encoding.
915
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1016
pub struct LineCol {

0 commit comments

Comments
 (0)