aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/assists/add_missing_impl_members.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/assists/add_missing_impl_members.rs')
-rw-r--r--crates/ra_assists/src/assists/add_missing_impl_members.rs58
1 files changed, 56 insertions, 2 deletions
diff --git a/crates/ra_assists/src/assists/add_missing_impl_members.rs b/crates/ra_assists/src/assists/add_missing_impl_members.rs
index 565b96fb5..36fa6f9ea 100644
--- a/crates/ra_assists/src/assists/add_missing_impl_members.rs
+++ b/crates/ra_assists/src/assists/add_missing_impl_members.rs
@@ -1,5 +1,3 @@
1//! FIXME: write short doc here
2
3use hir::{db::HirDatabase, HasSource}; 1use hir::{db::HirDatabase, HasSource};
4use ra_syntax::{ 2use ra_syntax::{
5 ast::{self, edit, make, AstNode, NameOwner}, 3 ast::{self, edit, make, AstNode, NameOwner},
@@ -14,6 +12,32 @@ enum AddMissingImplMembersMode {
14 NoDefaultMethods, 12 NoDefaultMethods,
15} 13}
16 14
15// Assist: add_impl_missing_members
16// Adds scaffold for required impl members
17// ```
18// trait T {
19// Type X;
20// fn foo(&self);
21// fn bar(&self) {}
22// }
23//
24// impl T for () {<|>
25//
26// }
27// ```
28// ->
29// ```
30// trait T {
31// Type X;
32// fn foo(&self);
33// fn bar(&self) {}
34// }
35//
36// impl T for () {
37// fn foo(&self) { unimplemented!() }
38//
39// }
40// ```
17pub(crate) fn add_missing_impl_members(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 41pub(crate) fn add_missing_impl_members(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
18 add_missing_impl_members_inner( 42 add_missing_impl_members_inner(
19 ctx, 43 ctx,
@@ -23,6 +47,36 @@ pub(crate) fn add_missing_impl_members(ctx: AssistCtx<impl HirDatabase>) -> Opti
23 ) 47 )
24} 48}
25 49
50// Assist: add_impl_default_members
51// Adds scaffold for overriding default impl members
52// ```
53// trait T {
54// Type X;
55// fn foo(&self);
56// fn bar(&self) {}
57// }
58//
59// impl T for () {
60// Type X = ();
61// fn foo(&self) {}<|>
62//
63// }
64// ```
65// ->
66// ```
67// trait T {
68// Type X;
69// fn foo(&self);
70// fn bar(&self) {}
71// }
72//
73// impl T for () {
74// Type X = ();
75// fn foo(&self) {}
76// fn bar(&self) {}
77//
78// }
79// ```
26pub(crate) fn add_missing_default_members(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 80pub(crate) fn add_missing_default_members(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
27 add_missing_impl_members_inner( 81 add_missing_impl_members_inner(
28 ctx, 82 ctx,