Skip to content

Commit c5868a4

Browse files
committed
Clarify the names one more time
1 parent 56e67e3 commit c5868a4

File tree

7 files changed

+26
-17
lines changed

7 files changed

+26
-17
lines changed

crates/ide/src/doc_links.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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) => NameRefClass::classify(&sema, &name_ref).map(|d| d.definition(sema.db)),
236-
ast::Name(name) => NameClass::classify(&sema, &name).map(|d| d.reference_or_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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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 = NameClass::classify(&sema, &name)?.reference_or_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
},
@@ -83,7 +83,7 @@ pub(crate) fn reference_definition(
8383
) -> ReferenceResult {
8484
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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ pub(crate) fn hover(
107107
let node = token.parent();
108108
let definition = match_ast! {
109109
match node {
110-
ast::Name(name) => NameClass::classify(&sema, &name).and_then(|d| d.definition(sema.db)),
111-
ast::NameRef(name_ref) => NameRefClass::classify(&sema, &name_ref).map(|d| d.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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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 = NameClass::classify(sema, &name)?.reference_or_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 = NameRefClass::classify(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_db/src/defs.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ pub enum NameClass {
9191
}
9292

9393
impl NameClass {
94-
pub fn definition(self, db: &dyn HirDatabase) -> Option<Definition> {
94+
/// `Definition` defined by this name.
95+
pub fn defined(self, db: &dyn HirDatabase) -> Option<Definition> {
9596
let res = match self {
9697
NameClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db).into()),
9798
NameClass::Definition(it) => it,
@@ -103,7 +104,8 @@ impl NameClass {
103104
Some(res)
104105
}
105106

106-
pub fn reference_or_definition(self, db: &dyn HirDatabase) -> Definition {
107+
/// `Definition` referenced or defined by this name.
108+
pub fn referenced_or_defined(self, db: &dyn HirDatabase) -> Definition {
107109
match self {
108110
NameClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db).into()),
109111
NameClass::Definition(it) | NameClass::ConstReference(it) => it,
@@ -150,7 +152,7 @@ impl NameClass {
150152
})
151153
.and_then(|name_ref| NameRefClass::classify(sema, &name_ref))?;
152154

153-
Some(NameClass::Definition(name_ref_class.definition(sema.db)))
155+
Some(NameClass::Definition(name_ref_class.referenced(sema.db)))
154156
} else {
155157
let extern_crate = it.syntax().parent().and_then(ast::ExternCrate::cast)?;
156158
let resolved = sema.resolve_extern_crate(&extern_crate)?;
@@ -233,15 +235,20 @@ impl NameClass {
233235
pub enum NameRefClass {
234236
ExternCrate(Crate),
235237
Definition(Definition),
236-
FieldShorthand { local: Local, field: Definition },
238+
FieldShorthand { local_ref: Local, field_ref: Definition },
237239
}
238240

239241
impl NameRefClass {
240-
pub fn definition(self, db: &dyn HirDatabase) -> Definition {
242+
/// `Definition`, which this name refers to.
243+
pub fn referenced(self, db: &dyn HirDatabase) -> Definition {
241244
match self {
242245
NameRefClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db).into()),
243246
NameRefClass::Definition(def) => def,
244-
NameRefClass::FieldShorthand { local, field: _ } => Definition::Local(local),
247+
NameRefClass::FieldShorthand { local_ref, field_ref: _ } => {
248+
// FIXME: this is inherently ambiguous -- this name refers to
249+
// two different defs....
250+
Definition::Local(local_ref)
251+
}
245252
}
246253
}
247254

@@ -272,7 +279,9 @@ impl NameRefClass {
272279
let field = Definition::Field(field);
273280
let res = match local {
274281
None => NameRefClass::Definition(field),
275-
Some(local) => NameRefClass::FieldShorthand { field, local },
282+
Some(local) => {
283+
NameRefClass::FieldShorthand { field_ref: field, local_ref: local }
284+
}
276285
};
277286
return Some(res);
278287
}

crates/ide_db/src/imports_locator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,5 @@ fn get_name_definition<'a>(
6060
candidate_node
6161
};
6262
let name = ast::Name::cast(candidate_name_node)?;
63-
NameClass::classify(sema, &name)?.definition(sema.db)
63+
NameClass::classify(sema, &name)?.defined(sema.db)
6464
}

crates/ide_db/src/search.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ impl<'a> FindUsages<'a> {
292292
};
293293
sink(reference)
294294
}
295-
Some(NameRefClass::FieldShorthand { local, field }) => {
295+
Some(NameRefClass::FieldShorthand { local_ref: local, field_ref: field }) => {
296296
let reference = match self.def {
297297
Definition::Field(_) if &field == self.def => Reference {
298298
file_range: self.sema.original_range(name_ref.syntax()),

0 commit comments

Comments
 (0)