diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ide_assists/src/handlers/generate_default_from_new.rs | 79 |
1 files changed, 44 insertions, 35 deletions
diff --git a/crates/ide_assists/src/handlers/generate_default_from_new.rs b/crates/ide_assists/src/handlers/generate_default_from_new.rs index a1174d315..e7f4591ac 100644 --- a/crates/ide_assists/src/handlers/generate_default_from_new.rs +++ b/crates/ide_assists/src/handlers/generate_default_from_new.rs | |||
@@ -1,5 +1,11 @@ | |||
1 | use crate::{AssistId, assist_context::{AssistContext, Assists}}; | 1 | use crate::{ |
2 | use syntax::{AstNode, SyntaxKind, SyntaxNode, SyntaxText, ast::{self, NameOwner}}; | 2 | assist_context::{AssistContext, Assists}, |
3 | AssistId, | ||
4 | }; | ||
5 | use syntax::{ | ||
6 | ast::{self, NameOwner}, | ||
7 | AstNode, SyntaxKind, SyntaxNode, SyntaxText, | ||
8 | }; | ||
3 | use test_utils::mark; | 9 | use test_utils::mark; |
4 | 10 | ||
5 | // Assist: generate_default_from_new | 11 | // Assist: generate_default_from_new |
@@ -51,7 +57,6 @@ pub(crate) fn generate_default_from_new(acc: &mut Assists, ctx: &AssistContext) | |||
51 | 57 | ||
52 | let default_fn_syntax = default_fn_node_for_new(struct_name); | 58 | let default_fn_syntax = default_fn_node_for_new(struct_name); |
53 | 59 | ||
54 | |||
55 | acc.add( | 60 | acc.add( |
56 | AssistId("generate_default_from_new", crate::AssistKind::Generate), | 61 | AssistId("generate_default_from_new", crate::AssistKind::Generate), |
57 | "Generate a Default impl from a new fn", | 62 | "Generate a Default impl from a new fn", |
@@ -72,14 +77,15 @@ fn scope_for_fn_insertion_node(node: &SyntaxNode) -> Option<SyntaxNode> { | |||
72 | fn default_fn_node_for_new(struct_name: SyntaxText) -> String { | 77 | fn default_fn_node_for_new(struct_name: SyntaxText) -> String { |
73 | // TODO: Update the implementation to consider the code indentation. | 78 | // TODO: Update the implementation to consider the code indentation. |
74 | format!( | 79 | format!( |
75 | r#" | 80 | r#" |
76 | 81 | ||
77 | impl Default for {} {{ | 82 | impl Default for {} {{ |
78 | fn default() -> Self {{ | 83 | fn default() -> Self {{ |
79 | Self::new() | 84 | Self::new() |
80 | }} | 85 | }} |
81 | }}"# | 86 | }}"#, |
82 | ,struct_name) | 87 | struct_name |
88 | ) | ||
83 | } | 89 | } |
84 | 90 | ||
85 | #[cfg(test)] | 91 | #[cfg(test)] |
@@ -157,8 +163,9 @@ impl Default for Test { | |||
157 | #[test] | 163 | #[test] |
158 | fn new_function_with_parameters() { | 164 | fn new_function_with_parameters() { |
159 | mark::check!(new_function_with_parameters); | 165 | mark::check!(new_function_with_parameters); |
160 | check_assist_not_applicable(generate_default_from_new, | 166 | check_assist_not_applicable( |
161 | r#" | 167 | generate_default_from_new, |
168 | r#" | ||
162 | struct Example { _inner: () } | 169 | struct Example { _inner: () } |
163 | 170 | ||
164 | impl Example { | 171 | impl Example { |
@@ -166,15 +173,16 @@ impl Example { | |||
166 | Self { _inner: value } | 173 | Self { _inner: value } |
167 | } | 174 | } |
168 | } | 175 | } |
169 | "# | 176 | "#, |
170 | ); | 177 | ); |
171 | } | 178 | } |
172 | 179 | ||
173 | #[test] | 180 | #[test] |
174 | fn other_function_than_new() { | 181 | fn other_function_than_new() { |
175 | mark::check!(other_function_than_new); | 182 | mark::check!(other_function_than_new); |
176 | check_assist_not_applicable(generate_default_from_new, | 183 | check_assist_not_applicable( |
177 | r#" | 184 | generate_default_from_new, |
185 | r#" | ||
178 | struct Example { _inner: () } | 186 | struct Example { _inner: () } |
179 | 187 | ||
180 | impl Exmaple { | 188 | impl Exmaple { |
@@ -183,39 +191,40 @@ impl Exmaple { | |||
183 | } | 191 | } |
184 | } | 192 | } |
185 | 193 | ||
186 | "# | 194 | "#, |
187 | ); | 195 | ); |
188 | } | 196 | } |
189 | 197 | ||
190 | // #[test] | 198 | // #[test] |
191 | // fn default_block_is_already_present() { | 199 | // fn default_block_is_already_present() { |
192 | // check_assist_not_applicable(generate_default_from_new, | 200 | // check_assist_not_applicable(generate_default_from_new, |
193 | // r#" | 201 | // r#" |
194 | // struct Example { _inner: () } | 202 | // struct Example { _inner: () } |
195 | 203 | ||
196 | // impl Exmaple { | 204 | // impl Exmaple { |
197 | // pub fn n$0ew() -> Self { | 205 | // pub fn n$0ew() -> Self { |
198 | // Self { _inner: () } | 206 | // Self { _inner: () } |
199 | // } | 207 | // } |
200 | // } | 208 | // } |
201 | 209 | ||
202 | // impl Default for Example { | 210 | // impl Default for Example { |
203 | // fn default() -> Self { | 211 | // fn default() -> Self { |
204 | // Self::new() | 212 | // Self::new() |
205 | // } | 213 | // } |
206 | // } | 214 | // } |
207 | // "#, | 215 | // "#, |
208 | // ); | 216 | // ); |
209 | // } | 217 | // } |
210 | 218 | ||
211 | #[test] | 219 | #[test] |
212 | fn standalone_new_function() { | 220 | fn standalone_new_function() { |
213 | check_assist_not_applicable(generate_default_from_new, | 221 | check_assist_not_applicable( |
214 | r#" | 222 | generate_default_from_new, |
223 | r#" | ||
215 | fn n$0ew() -> u32 { | 224 | fn n$0ew() -> u32 { |
216 | 0 | 225 | 0 |
217 | } | 226 | } |
218 | "# | 227 | "#, |
219 | ); | 228 | ); |
220 | } | 229 | } |
221 | } | 230 | } |