diff options
-rw-r--r-- | crates/assists/src/handlers/generate_impl.rs | 25 | ||||
-rw-r--r-- | crates/assists/src/utils.rs | 9 |
2 files changed, 33 insertions, 1 deletions
diff --git a/crates/assists/src/handlers/generate_impl.rs b/crates/assists/src/handlers/generate_impl.rs index 16a600e6f..a8e3c4fc2 100644 --- a/crates/assists/src/handlers/generate_impl.rs +++ b/crates/assists/src/handlers/generate_impl.rs | |||
@@ -122,6 +122,31 @@ mod tests { | |||
122 | $0 | 122 | $0 |
123 | }"#, | 123 | }"#, |
124 | ); | 124 | ); |
125 | |||
126 | check_assist( | ||
127 | generate_impl, | ||
128 | r#"pub trait Trait {} | ||
129 | struct Struct<T>$0 | ||
130 | where | ||
131 | T: Trait, | ||
132 | { | ||
133 | inner: T, | ||
134 | }"#, | ||
135 | r#"pub trait Trait {} | ||
136 | struct Struct<T> | ||
137 | where | ||
138 | T: Trait, | ||
139 | { | ||
140 | inner: T, | ||
141 | } | ||
142 | |||
143 | impl<T> Struct<T> | ||
144 | where | ||
145 | T: Trait, | ||
146 | { | ||
147 | $0 | ||
148 | }"#, | ||
149 | ); | ||
125 | } | 150 | } |
126 | 151 | ||
127 | #[test] | 152 | #[test] |
diff --git a/crates/assists/src/utils.rs b/crates/assists/src/utils.rs index 8418e6e12..0074da741 100644 --- a/crates/assists/src/utils.rs +++ b/crates/assists/src/utils.rs | |||
@@ -421,7 +421,14 @@ fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str | |||
421 | format_to!(buf, "<{}>", lifetime_params.chain(type_params).format(", ")) | 421 | format_to!(buf, "<{}>", lifetime_params.chain(type_params).format(", ")) |
422 | } | 422 | } |
423 | 423 | ||
424 | format_to!(buf, " {{\n{}\n}}", code); | 424 | match adt.where_clause() { |
425 | Some(where_clause) => { | ||
426 | format_to!(buf, "\n{}\n{{\n{}\n}}", where_clause, code); | ||
427 | } | ||
428 | None => { | ||
429 | format_to!(buf, " {{\n{}\n}}", code); | ||
430 | } | ||
431 | } | ||
425 | 432 | ||
426 | buf | 433 | buf |
427 | } | 434 | } |