Skip to content

Commit 58f6431

Browse files
Merge #4321
4321: Rename ImplItem to AssocItem r=matklad a=edwin0cheng Related discussion: #4283 (comment) Co-authored-by: Edwin Cheng <[email protected]>
2 parents 756e917 + 9266535 commit 58f6431

File tree

12 files changed

+83
-77
lines changed

12 files changed

+83
-77
lines changed

crates/ra_assists/src/handlers/add_missing_impl_members.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use ra_syntax::{
1010

1111
use crate::{
1212
ast_transform::{self, AstTransform, QualifyPaths, SubstituteTypeParams},
13-
utils::{get_missing_impl_items, resolve_target_trait},
13+
utils::{get_missing_assoc_items, resolve_target_trait},
1414
Assist, AssistCtx, AssistId,
1515
};
1616

@@ -112,25 +112,25 @@ fn add_missing_impl_members_inner(
112112

113113
let trait_ = resolve_target_trait(&ctx.sema, &impl_node)?;
114114

115-
let def_name = |item: &ast::ImplItem| -> Option<SmolStr> {
115+
let def_name = |item: &ast::AssocItem| -> Option<SmolStr> {
116116
match item {
117-
ast::ImplItem::FnDef(def) => def.name(),
118-
ast::ImplItem::TypeAliasDef(def) => def.name(),
119-
ast::ImplItem::ConstDef(def) => def.name(),
117+
ast::AssocItem::FnDef(def) => def.name(),
118+
ast::AssocItem::TypeAliasDef(def) => def.name(),
119+
ast::AssocItem::ConstDef(def) => def.name(),
120120
}
121121
.map(|it| it.text().clone())
122122
};
123123

124-
let missing_items = get_missing_impl_items(&ctx.sema, &impl_node)
124+
let missing_items = get_missing_assoc_items(&ctx.sema, &impl_node)
125125
.iter()
126126
.map(|i| match i {
127-
hir::AssocItem::Function(i) => ast::ImplItem::FnDef(i.source(ctx.db).value),
128-
hir::AssocItem::TypeAlias(i) => ast::ImplItem::TypeAliasDef(i.source(ctx.db).value),
129-
hir::AssocItem::Const(i) => ast::ImplItem::ConstDef(i.source(ctx.db).value),
127+
hir::AssocItem::Function(i) => ast::AssocItem::FnDef(i.source(ctx.db).value),
128+
hir::AssocItem::TypeAlias(i) => ast::AssocItem::TypeAliasDef(i.source(ctx.db).value),
129+
hir::AssocItem::Const(i) => ast::AssocItem::ConstDef(i.source(ctx.db).value),
130130
})
131131
.filter(|t| def_name(&t).is_some())
132132
.filter(|t| match t {
133-
ast::ImplItem::FnDef(def) => match mode {
133+
ast::AssocItem::FnDef(def) => match mode {
134134
AddMissingImplMembersMode::DefaultMethodsOnly => def.body().is_some(),
135135
AddMissingImplMembersMode::NoDefaultMethods => def.body().is_none(),
136136
},
@@ -145,7 +145,7 @@ fn add_missing_impl_members_inner(
145145
let sema = ctx.sema;
146146

147147
ctx.add_assist(AssistId(assist_id), label, |edit| {
148-
let n_existing_items = impl_item_list.impl_items().count();
148+
let n_existing_items = impl_item_list.assoc_items().count();
149149
let source_scope = sema.scope_for_def(trait_);
150150
let target_scope = sema.scope(impl_item_list.syntax());
151151
let ast_transform = QualifyPaths::new(&target_scope, &source_scope)
@@ -154,13 +154,13 @@ fn add_missing_impl_members_inner(
154154
.into_iter()
155155
.map(|it| ast_transform::apply(&*ast_transform, it))
156156
.map(|it| match it {
157-
ast::ImplItem::FnDef(def) => ast::ImplItem::FnDef(add_body(def)),
157+
ast::AssocItem::FnDef(def) => ast::AssocItem::FnDef(add_body(def)),
158158
_ => it,
159159
})
160160
.map(|it| edit::remove_attrs_and_docs(&it));
161161
let new_impl_item_list = impl_item_list.append_items(items);
162162
let cursor_position = {
163-
let first_new_item = new_impl_item_list.impl_items().nth(n_existing_items).unwrap();
163+
let first_new_item = new_impl_item_list.assoc_items().nth(n_existing_items).unwrap();
164164
first_new_item.syntax().text_range().start()
165165
};
166166

crates/ra_assists/src/handlers/add_new.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ fn find_struct_impl(ctx: &AssistCtx, strukt: &ast::StructDef) -> Option<Option<a
162162

163163
fn has_new_fn(imp: &ast::ImplDef) -> bool {
164164
if let Some(il) = imp.item_list() {
165-
for item in il.impl_items() {
166-
if let ast::ImplItem::FnDef(f) = item {
165+
for item in il.assoc_items() {
166+
if let ast::AssocItem::FnDef(f) = item {
167167
if let Some(name) = f.name() {
168168
if name.text().eq_ignore_ascii_case("new") {
169169
return true;

crates/ra_assists/src/utils.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use rustc_hash::FxHashSet;
1313

1414
pub(crate) use insert_use::insert_use_statement;
1515

16-
pub fn get_missing_impl_items(
16+
pub fn get_missing_assoc_items(
1717
sema: &Semantics<RootDatabase>,
1818
impl_def: &ast::ImplDef,
1919
) -> Vec<hir::AssocItem> {
@@ -23,21 +23,21 @@ pub fn get_missing_impl_items(
2323
let mut impl_type = FxHashSet::default();
2424

2525
if let Some(item_list) = impl_def.item_list() {
26-
for item in item_list.impl_items() {
26+
for item in item_list.assoc_items() {
2727
match item {
28-
ast::ImplItem::FnDef(f) => {
28+
ast::AssocItem::FnDef(f) => {
2929
if let Some(n) = f.name() {
3030
impl_fns_consts.insert(n.syntax().to_string());
3131
}
3232
}
3333

34-
ast::ImplItem::TypeAliasDef(t) => {
34+
ast::AssocItem::TypeAliasDef(t) => {
3535
if let Some(n) = t.name() {
3636
impl_type.insert(n.syntax().to_string());
3737
}
3838
}
3939

40-
ast::ImplItem::ConstDef(c) => {
40+
ast::AssocItem::ConstDef(c) => {
4141
if let Some(n) = c.name() {
4242
impl_fns_consts.insert(n.syntax().to_string());
4343
}

crates/ra_hir/src/code_model.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ impl Type {
12111211

12121212
// This would be nicer if it just returned an iterator, but that runs into
12131213
// lifetime problems, because we need to borrow temp `CrateImplDefs`.
1214-
pub fn iterate_impl_items<T>(
1214+
pub fn iterate_assoc_items<T>(
12151215
self,
12161216
db: &dyn HirDatabase,
12171217
krate: Crate,

crates/ra_hir_def/src/data.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use hir_expand::{
99
};
1010
use ra_prof::profile;
1111
use ra_syntax::ast::{
12-
self, AstNode, ImplItem, ModuleItemOwner, NameOwner, TypeAscriptionOwner, TypeBoundsOwner,
12+
self, AssocItem, AstNode, ModuleItemOwner, NameOwner, TypeAscriptionOwner, TypeBoundsOwner,
1313
VisibilityOwner,
1414
};
1515

@@ -164,7 +164,7 @@ impl TraitData {
164164
items.extend(collect_items(
165165
db,
166166
&mut expander,
167-
item_list.impl_items(),
167+
item_list.assoc_items(),
168168
src.file_id,
169169
container,
170170
));
@@ -219,7 +219,7 @@ impl ImplData {
219219
if let Some(item_list) = src.value.item_list() {
220220
let mut expander = Expander::new(db, impl_loc.ast_id.file_id, module_id);
221221
items.extend(
222-
collect_items(db, &mut expander, item_list.impl_items(), src.file_id, container)
222+
collect_items(db, &mut expander, item_list.assoc_items(), src.file_id, container)
223223
.into_iter()
224224
.map(|(_, item)| item),
225225
);
@@ -304,7 +304,7 @@ fn collect_items_in_macro(
304304
let mut res = collect_items(
305305
db,
306306
expander,
307-
items.value.items().filter_map(|it| ImplItem::cast(it.syntax().clone())),
307+
items.value.items().filter_map(|it| AssocItem::cast(it.syntax().clone())),
308308
items.file_id,
309309
container,
310310
);
@@ -325,15 +325,15 @@ fn collect_items_in_macro(
325325
fn collect_items(
326326
db: &dyn DefDatabase,
327327
expander: &mut Expander,
328-
impl_items: impl Iterator<Item = ImplItem>,
328+
assoc_items: impl Iterator<Item = AssocItem>,
329329
file_id: crate::HirFileId,
330330
container: AssocContainerId,
331331
) -> Vec<(Name, AssocItemId)> {
332332
let items = db.ast_id_map(file_id);
333333

334-
impl_items
334+
assoc_items
335335
.filter_map(|item_node| match item_node {
336-
ast::ImplItem::FnDef(it) => {
336+
ast::AssocItem::FnDef(it) => {
337337
let name = it.name().map_or_else(Name::missing, |it| it.as_name());
338338
if !expander.is_cfg_enabled(&it) {
339339
return None;
@@ -342,13 +342,13 @@ fn collect_items(
342342
.intern(db);
343343
Some((name, def.into()))
344344
}
345-
ast::ImplItem::ConstDef(it) => {
345+
ast::AssocItem::ConstDef(it) => {
346346
let name = it.name().map_or_else(Name::missing, |it| it.as_name());
347347
let def = ConstLoc { container, ast_id: AstId::new(file_id, items.ast_id(&it)) }
348348
.intern(db);
349349
Some((name, def.into()))
350350
}
351-
ast::ImplItem::TypeAliasDef(it) => {
351+
ast::AssocItem::TypeAliasDef(it) => {
352352
let name = it.name().map_or_else(Name::missing, |it| it.as_name());
353353
let def =
354354
TypeAliasLoc { container, ast_id: AstId::new(file_id, items.ast_id(&it)) }

crates/ra_hir_ty/src/tests/macros.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ fn test() { S.foo()<|>; }
269269
}
270270

271271
#[test]
272-
fn infer_impl_items_generated_by_macros() {
272+
fn infer_assoc_items_generated_by_macros() {
273273
let t = type_at(
274274
r#"
275275
//- /main.rs
@@ -288,7 +288,7 @@ fn test() { S.foo()<|>; }
288288
}
289289

290290
#[test]
291-
fn infer_impl_items_generated_by_macros_chain() {
291+
fn infer_assoc_items_generated_by_macros_chain() {
292292
let t = type_at(
293293
r#"
294294
//- /main.rs

crates/ra_ide/src/completion/complete_qualified_path.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionCon
8484
});
8585

8686
// Iterate assoc types separately
87-
ty.iterate_impl_items(ctx.db, krate, |item| {
87+
ty.iterate_assoc_items(ctx.db, krate, |item| {
8888
if context_module.map_or(false, |m| !item.is_visible_from(ctx.db, m)) {
8989
return None;
9090
}

crates/ra_ide/src/completion/complete_trait_impl.rs

+26-20
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
//! ```
3333
3434
use hir::{self, Docs, HasSource};
35-
use ra_assists::utils::get_missing_impl_items;
35+
use ra_assists::utils::get_missing_assoc_items;
3636
use ra_syntax::{
3737
ast::{self, edit, ImplDef},
3838
AstNode, SyntaxKind, SyntaxNode, TextRange, T,
@@ -50,7 +50,7 @@ pub(crate) fn complete_trait_impl(acc: &mut Completions, ctx: &CompletionContext
5050
if let Some((trigger, impl_def)) = completion_match(ctx) {
5151
match trigger.kind() {
5252
SyntaxKind::NAME_REF => {
53-
get_missing_impl_items(&ctx.sema, &impl_def).iter().for_each(|item| match item {
53+
get_missing_assoc_items(&ctx.sema, &impl_def).iter().for_each(|item| match item {
5454
hir::AssocItem::Function(fn_item) => {
5555
add_function_impl(&trigger, acc, ctx, &fn_item)
5656
}
@@ -64,34 +64,40 @@ pub(crate) fn complete_trait_impl(acc: &mut Completions, ctx: &CompletionContext
6464
}
6565

6666
SyntaxKind::FN_DEF => {
67-
for missing_fn in get_missing_impl_items(&ctx.sema, &impl_def).iter().filter_map(
68-
|item| match item {
69-
hir::AssocItem::Function(fn_item) => Some(fn_item),
70-
_ => None,
71-
},
72-
) {
67+
for missing_fn in
68+
get_missing_assoc_items(&ctx.sema, &impl_def).iter().filter_map(|item| {
69+
match item {
70+
hir::AssocItem::Function(fn_item) => Some(fn_item),
71+
_ => None,
72+
}
73+
})
74+
{
7375
add_function_impl(&trigger, acc, ctx, &missing_fn);
7476
}
7577
}
7678

7779
SyntaxKind::TYPE_ALIAS_DEF => {
78-
for missing_fn in get_missing_impl_items(&ctx.sema, &impl_def).iter().filter_map(
79-
|item| match item {
80-
hir::AssocItem::TypeAlias(type_item) => Some(type_item),
81-
_ => None,
82-
},
83-
) {
80+
for missing_fn in
81+
get_missing_assoc_items(&ctx.sema, &impl_def).iter().filter_map(|item| {
82+
match item {
83+
hir::AssocItem::TypeAlias(type_item) => Some(type_item),
84+
_ => None,
85+
}
86+
})
87+
{
8488
add_type_alias_impl(&trigger, acc, ctx, &missing_fn);
8589
}
8690
}
8791

8892
SyntaxKind::CONST_DEF => {
89-
for missing_fn in get_missing_impl_items(&ctx.sema, &impl_def).iter().filter_map(
90-
|item| match item {
91-
hir::AssocItem::Const(const_item) => Some(const_item),
92-
_ => None,
93-
},
94-
) {
93+
for missing_fn in
94+
get_missing_assoc_items(&ctx.sema, &impl_def).iter().filter_map(|item| {
95+
match item {
96+
hir::AssocItem::Const(const_item) => Some(const_item),
97+
_ => None,
98+
}
99+
})
100+
{
95101
add_const_impl(&trigger, acc, ctx, &missing_fn);
96102
}
97103
}

crates/ra_mbe/src/syntax_bridge.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ pub fn syntax_node_to_token_tree(node: &SyntaxNode) -> Option<(tt::Subtree, Toke
6363
// * Items(SmallVec<[P<ast::Item>; 1]>) -> token_tree_to_items
6464
//
6565
// * TraitItems(SmallVec<[ast::TraitItem; 1]>)
66-
// * ImplItems(SmallVec<[ast::ImplItem; 1]>)
66+
// * AssocItems(SmallVec<[ast::AssocItem; 1]>)
6767
// * ForeignItems(SmallVec<[ast::ForeignItem; 1]>
6868

6969
pub fn token_tree_to_syntax_node(

crates/ra_syntax/src/ast/edit.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ where
7979

8080
impl ast::ItemList {
8181
#[must_use]
82-
pub fn append_items(&self, items: impl IntoIterator<Item = ast::ImplItem>) -> ast::ItemList {
82+
pub fn append_items(&self, items: impl IntoIterator<Item = ast::AssocItem>) -> ast::ItemList {
8383
let mut res = self.clone();
8484
if !self.syntax().text().contains_char('\n') {
8585
res = make_multiline(res);
@@ -89,8 +89,8 @@ impl ast::ItemList {
8989
}
9090

9191
#[must_use]
92-
pub fn append_item(&self, item: ast::ImplItem) -> ast::ItemList {
93-
let (indent, position) = match self.impl_items().last() {
92+
pub fn append_item(&self, item: ast::AssocItem) -> ast::ItemList {
93+
let (indent, position) = match self.assoc_items().last() {
9494
Some(it) => (
9595
leading_indent(it.syntax()).unwrap_or_default().to_string(),
9696
InsertPosition::After(it.syntax().clone().into()),

0 commit comments

Comments
 (0)