Skip to content

Commit b496b88

Browse files
giacomocavalierilpil
authored andcommitted
use the same interface for finding references everywhere
1 parent 9689d4f commit b496b88

File tree

4 files changed

+15
-27
lines changed

4 files changed

+15
-27
lines changed

compiler-core/src/language_server/code_action.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use super::{
3636
edits::{add_newlines_after_import, get_import_edit, position_of_first_definition_if_import},
3737
engine::{overlaps, within},
3838
files::FileSystemProxy,
39-
reference::{VariableReferenceKind, find_variable_references},
39+
reference::VariableReferenceKind,
4040
src_span_to_lsp_range, url_from_path,
4141
};
4242

@@ -5947,7 +5947,8 @@ impl<'a> InlineVariable<'a> {
59475947
}
59485948

59495949
fn maybe_inline(&mut self, location: SrcSpan, name: EcoString) {
5950-
let references = find_variable_references(&self.module.ast, location, name);
5950+
let references =
5951+
FindVariableReferences::new(location, name).find_in_module(&self.module.ast);
59515952
let reference = if references.len() == 1 {
59525953
references
59535954
.into_iter()

compiler-core/src/language_server/engine.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use crate::{
1616
compiler::LspProjectCompiler,
1717
files::FileSystemProxy,
1818
progress::ProgressReporter,
19+
reference::FindVariableReferences,
1920
},
2021
line_numbers::LineNumbers,
2122
paths::ProjectPaths,
@@ -53,8 +54,7 @@ use super::{
5354
},
5455
completer::Completer,
5556
reference::{
56-
Referenced, VariableReferenceKind, find_module_references, find_variable_references,
57-
reference_for_ast_node,
57+
Referenced, VariableReferenceKind, find_module_references, reference_for_ast_node,
5858
},
5959
rename::{RenameTarget, Renamed, rename_local_variable, rename_module_entity},
6060
signature_help, src_span_to_lsp_range,
@@ -803,7 +803,8 @@ where
803803
)
804804
| None => {
805805
let variable_references =
806-
find_variable_references(&module.ast, definition_location, name);
806+
FindVariableReferences::new(definition_location, name)
807+
.find_in_module(&module.ast);
807808

808809
let mut reference_locations =
809810
Vec::with_capacity(variable_references.len() + 1);

compiler-core/src/language_server/reference.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -354,21 +354,6 @@ pub enum VariableReferenceKind {
354354
LabelShorthand,
355355
}
356356

357-
pub fn find_variable_references(
358-
module: &TypedModule,
359-
definition_location: SrcSpan,
360-
name: EcoString,
361-
) -> HashSet<VariableReference> {
362-
let mut finder = FindVariableReferences {
363-
references: HashSet::new(),
364-
definition_location,
365-
alternative_variable: AlternativeVariable::Ignore,
366-
name,
367-
};
368-
finder.visit_typed_module(module);
369-
finder.references
370-
}
371-
372357
/// How to treat variables defined in alternative patterns
373358
enum AlternativeVariable {
374359
Track,

compiler-core/src/language_server/rename.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ use crate::{
77
analyse::name,
88
ast::{self, Definition, SrcSpan},
99
build::Module,
10-
language_server::edits::{
11-
self, Newlines, add_newlines_after_import, position_of_first_definition_if_import,
10+
language_server::{
11+
edits::{
12+
self, Newlines, add_newlines_after_import, position_of_first_definition_if_import,
13+
},
14+
reference::FindVariableReferences,
1215
},
1316
line_numbers::LineNumbers,
1417
reference::ReferenceKind,
1518
type_::{ModuleInterface, error::Named},
1619
};
1720

1821
use super::{
19-
TextEdits,
20-
compiler::ModuleSourceInformation,
21-
reference::{VariableReferenceKind, find_variable_references},
22-
url_from_path,
22+
TextEdits, compiler::ModuleSourceInformation, reference::VariableReferenceKind, url_from_path,
2323
};
2424

2525
fn workspace_edit(uri: Url, edits: Vec<TextEdit>) -> WorkspaceEdit {
@@ -54,7 +54,8 @@ pub fn rename_local_variable(
5454
let uri = params.text_document_position.text_document.uri.clone();
5555
let mut edits = TextEdits::new(line_numbers);
5656

57-
let references = find_variable_references(&module.ast, definition_location, name);
57+
let references =
58+
FindVariableReferences::new(definition_location, name).find_in_module(&module.ast);
5859

5960
match kind {
6061
VariableReferenceKind::Variable => {

0 commit comments

Comments
 (0)