Skip to content

Commit d8c6e19

Browse files
bors[bot]matklad
andauthored
Merge #6243
6243: Clarify classification API r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
2 parents 7fadc78 + c5868a4 commit d8c6e19

File tree

11 files changed

+228
-215
lines changed

11 files changed

+228
-215
lines changed

crates/assists/src/handlers/add_turbo_fish.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use ide_db::defs::{classify_name_ref, Definition, NameRefClass};
1+
use ide_db::defs::{Definition, NameRefClass};
22
use syntax::{ast, AstNode, SyntaxKind, T};
33
use test_utils::mark;
44

@@ -39,7 +39,7 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext) -> Option<(
3939
return None;
4040
}
4141
let name_ref = ast::NameRef::cast(ident.parent())?;
42-
let def = match classify_name_ref(&ctx.sema, &name_ref)? {
42+
let def = match NameRefClass::classify(&ctx.sema, &name_ref)? {
4343
NameRefClass::Definition(def) => def,
4444
NameRefClass::ExternCrate(_) | NameRefClass::FieldShorthand { .. } => return None,
4545
};

crates/assists/src/handlers/expand_glob_import.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use either::Either;
22
use hir::{AssocItem, MacroDef, Module, ModuleDef, Name, PathResolution, ScopeDef};
33
use ide_db::{
4-
defs::{classify_name_ref, Definition, NameRefClass},
4+
defs::{Definition, NameRefClass},
55
search::SearchScope,
66
};
77
use syntax::{
@@ -217,7 +217,7 @@ fn find_imported_defs(ctx: &AssistContext, star: SyntaxToken) -> Option<Vec<Def>
217217
.flatten()
218218
.filter_map(|n| Some(n.descendants().filter_map(ast::NameRef::cast)))
219219
.flatten()
220-
.filter_map(|r| match classify_name_ref(&ctx.sema, &r)? {
220+
.filter_map(|r| match NameRefClass::classify(&ctx.sema, &r)? {
221221
NameRefClass::Definition(Definition::ModuleDef(def)) => Some(Def::ModuleDef(def)),
222222
NameRefClass::Definition(Definition::Macro(def)) => Some(Def::MacroDef(def)),
223223
_ => None,

crates/ide/src/doc_links.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use hir::{
1414
ModuleDef,
1515
};
1616
use ide_db::{
17-
defs::{classify_name, classify_name_ref, Definition},
17+
defs::{Definition, NameClass, NameRefClass},
1818
RootDatabase,
1919
};
2020
use syntax::{ast, match_ast, AstNode, SyntaxKind::*, SyntaxToken, TokenAtOffset, T};
@@ -232,8 +232,8 @@ pub(crate) fn external_docs(
232232
let node = token.parent();
233233
let definition = match_ast! {
234234
match node {
235-
ast::NameRef(name_ref) => classify_name_ref(&sema, &name_ref).map(|d| d.definition(sema.db)),
236-
ast::Name(name) => classify_name(&sema, &name).map(|d| d.definition(sema.db)),
235+
ast::NameRef(name_ref) => NameRefClass::classify(&sema, &name_ref).map(|d| d.referenced(sema.db)),
236+
ast::Name(name) => NameClass::classify(&sema, &name).map(|d| d.referenced_or_defined(sema.db)),
237237
_ => None,
238238
}
239239
};

crates/ide/src/goto_definition.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use hir::Semantics;
22
use ide_db::{
3-
defs::{classify_name, classify_name_ref},
3+
defs::{NameClass, NameRefClass},
44
symbol_index, RootDatabase,
55
};
66
use syntax::{
@@ -40,7 +40,7 @@ pub(crate) fn goto_definition(
4040
reference_definition(&sema, &name_ref).to_vec()
4141
},
4242
ast::Name(name) => {
43-
let def = classify_name(&sema, &name)?.definition(sema.db);
43+
let def = NameClass::classify(&sema, &name)?.referenced_or_defined(sema.db);
4444
let nav = def.try_to_nav(sema.db)?;
4545
vec![nav]
4646
},
@@ -81,9 +81,9 @@ pub(crate) fn reference_definition(
8181
sema: &Semantics<RootDatabase>,
8282
name_ref: &ast::NameRef,
8383
) -> ReferenceResult {
84-
let name_kind = classify_name_ref(sema, name_ref);
84+
let name_kind = NameRefClass::classify(sema, name_ref);
8585
if let Some(def) = name_kind {
86-
let def = def.definition(sema.db);
86+
let def = def.referenced(sema.db);
8787
return match def.try_to_nav(sema.db) {
8888
Some(nav) => ReferenceResult::Exact(nav),
8989
None => ReferenceResult::Approximate(Vec::new()),

crates/ide/src/hover.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use hir::{
44
Module, ModuleDef, ModuleSource, Semantics,
55
};
66
use ide_db::{
7-
defs::{classify_name, classify_name_ref, Definition},
7+
defs::{Definition, NameClass, NameRefClass},
88
RootDatabase,
99
};
1010
use itertools::Itertools;
@@ -107,8 +107,8 @@ pub(crate) fn hover(
107107
let node = token.parent();
108108
let definition = match_ast! {
109109
match node {
110-
ast::NameRef(name_ref) => classify_name_ref(&sema, &name_ref).map(|d| d.definition(sema.db)),
111-
ast::Name(name) => classify_name(&sema, &name).and_then(|d| d.into_definition(sema.db)),
110+
ast::Name(name) => NameClass::classify(&sema, &name).and_then(|d| d.defined(sema.db)),
111+
ast::NameRef(name_ref) => NameRefClass::classify(&sema, &name_ref).map(|d| d.referenced(sema.db)),
112112
_ => None,
113113
}
114114
};

crates/ide/src/references.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub(crate) mod rename;
1313

1414
use hir::Semantics;
1515
use ide_db::{
16-
defs::{classify_name, classify_name_ref, Definition},
16+
defs::{Definition, NameClass, NameRefClass},
1717
search::SearchScope,
1818
RootDatabase,
1919
};
@@ -132,13 +132,13 @@ fn find_name(
132132
opt_name: Option<ast::Name>,
133133
) -> Option<RangeInfo<Definition>> {
134134
if let Some(name) = opt_name {
135-
let def = classify_name(sema, &name)?.definition(sema.db);
135+
let def = NameClass::classify(sema, &name)?.referenced_or_defined(sema.db);
136136
let range = name.syntax().text_range();
137137
return Some(RangeInfo::new(range, def));
138138
}
139139
let name_ref =
140140
sema.find_node_at_offset_with_descend::<ast::NameRef>(&syntax, position.offset)?;
141-
let def = classify_name_ref(sema, &name_ref)?.definition(sema.db);
141+
let def = NameRefClass::classify(sema, &name_ref)?.referenced(sema.db);
142142
let range = name_ref.syntax().text_range();
143143
Some(RangeInfo::new(range, def))
144144
}

crates/ide/src/references/rename.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use base_db::SourceDatabaseExt;
44
use hir::{Module, ModuleDef, ModuleSource, Semantics};
55
use ide_db::{
6-
defs::{classify_name, classify_name_ref, Definition, NameClass, NameRefClass},
6+
defs::{Definition, NameClass, NameRefClass},
77
RootDatabase,
88
};
99

@@ -88,13 +88,13 @@ fn find_module_at_offset(
8888
let module = match_ast! {
8989
match (ident.parent()) {
9090
ast::NameRef(name_ref) => {
91-
match classify_name_ref(sema, &name_ref)? {
91+
match NameRefClass::classify(sema, &name_ref)? {
9292
NameRefClass::Definition(Definition::ModuleDef(ModuleDef::Module(module))) => module,
9393
_ => return None,
9494
}
9595
},
9696
ast::Name(name) => {
97-
match classify_name(&sema, &name)? {
97+
match NameClass::classify(&sema, &name)? {
9898
NameClass::Definition(Definition::ModuleDef(ModuleDef::Module(module))) => module,
9999
_ => return None,
100100
}

crates/ide/src/syntax_highlighting.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ mod tests;
88

99
use hir::{Local, Name, Semantics, VariantDef};
1010
use ide_db::{
11-
defs::{classify_name, classify_name_ref, Definition, NameClass, NameRefClass},
11+
defs::{Definition, NameClass, NameRefClass},
1212
RootDatabase,
1313
};
1414
use rustc_hash::FxHashMap;
@@ -443,7 +443,7 @@ fn highlight_element(
443443
// Highlight definitions depending on the "type" of the definition.
444444
NAME => {
445445
let name = element.into_node().and_then(ast::Name::cast).unwrap();
446-
let name_kind = classify_name(sema, &name);
446+
let name_kind = NameClass::classify(sema, &name);
447447

448448
if let Some(NameClass::Definition(Definition::Local(local))) = &name_kind {
449449
if let Some(name) = local.name(db) {
@@ -459,9 +459,9 @@ fn highlight_element(
459459
highlight_def(db, def) | HighlightModifier::Definition
460460
}
461461
Some(NameClass::ConstReference(def)) => highlight_def(db, def),
462-
Some(NameClass::FieldShorthand { field, .. }) => {
462+
Some(NameClass::PatFieldShorthand { field_ref, .. }) => {
463463
let mut h = HighlightTag::Field.into();
464-
if let Definition::Field(field) = field {
464+
if let Definition::Field(field) = field_ref {
465465
if let VariantDef::Union(_) = field.parent_def(db) {
466466
h |= HighlightModifier::Unsafe;
467467
}
@@ -480,7 +480,7 @@ fn highlight_element(
480480
NAME_REF => {
481481
let name_ref = element.into_node().and_then(ast::NameRef::cast).unwrap();
482482
highlight_func_by_name_ref(sema, &name_ref).unwrap_or_else(|| {
483-
match classify_name_ref(sema, &name_ref) {
483+
match NameRefClass::classify(sema, &name_ref) {
484484
Some(name_kind) => match name_kind {
485485
NameRefClass::ExternCrate(_) => HighlightTag::Module.into(),
486486
NameRefClass::Definition(def) => {

0 commit comments

Comments
 (0)