diff options
Diffstat (limited to 'crates/ra_assists/src/add_missing_impl_members.rs')
-rw-r--r-- | crates/ra_assists/src/add_missing_impl_members.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/ra_assists/src/add_missing_impl_members.rs b/crates/ra_assists/src/add_missing_impl_members.rs index e13f54c4f..5b01e898e 100644 --- a/crates/ra_assists/src/add_missing_impl_members.rs +++ b/crates/ra_assists/src/add_missing_impl_members.rs | |||
@@ -1,3 +1,5 @@ | |||
1 | use std::fmt::Write; | ||
2 | |||
1 | use crate::{Assist, AssistId, AssistCtx}; | 3 | use crate::{Assist, AssistId, AssistCtx}; |
2 | 4 | ||
3 | use hir::Resolver; | 5 | use hir::Resolver; |
@@ -91,8 +93,9 @@ fn add_missing_impl_members_inner( | |||
91 | }; | 93 | }; |
92 | 94 | ||
93 | let changed_range = { | 95 | let changed_range = { |
94 | let children = impl_item_list.syntax().children(); | 96 | let children = impl_item_list.syntax().children_with_tokens(); |
95 | let last_whitespace = children.filter_map(ast::Whitespace::cast).last(); | 97 | let last_whitespace = |
98 | children.filter_map(|it| ast::Whitespace::cast(it.as_token()?)).last(); | ||
96 | 99 | ||
97 | last_whitespace.map(|w| w.syntax().range()).unwrap_or_else(|| { | 100 | last_whitespace.map(|w| w.syntax().range()).unwrap_or_else(|| { |
98 | let in_brackets = impl_item_list.syntax().range().end() - TextUnit::of_str("}"); | 101 | let in_brackets = impl_item_list.syntax().range().end() - TextUnit::of_str("}"); |
@@ -134,13 +137,13 @@ fn resolve_target_trait_def( | |||
134 | fn build_func_body(def: &ast::FnDef) -> String { | 137 | fn build_func_body(def: &ast::FnDef) -> String { |
135 | let mut buf = String::new(); | 138 | let mut buf = String::new(); |
136 | 139 | ||
137 | for child in def.syntax().children() { | 140 | for child in def.syntax().children_with_tokens() { |
138 | match (child.prev_sibling().map(|c| c.kind()), child.kind()) { | 141 | match (child.prev_sibling_or_token().map(|c| c.kind()), child.kind()) { |
139 | (_, SyntaxKind::SEMI) => buf.push_str(" { unimplemented!() }"), | 142 | (_, SyntaxKind::SEMI) => buf.push_str(" { unimplemented!() }"), |
140 | (_, SyntaxKind::ATTR) | (_, SyntaxKind::COMMENT) => {} | 143 | (_, SyntaxKind::ATTR) | (_, SyntaxKind::COMMENT) => {} |
141 | (Some(SyntaxKind::ATTR), SyntaxKind::WHITESPACE) | 144 | (Some(SyntaxKind::ATTR), SyntaxKind::WHITESPACE) |
142 | | (Some(SyntaxKind::COMMENT), SyntaxKind::WHITESPACE) => {} | 145 | | (Some(SyntaxKind::COMMENT), SyntaxKind::WHITESPACE) => {} |
143 | _ => child.text().push_to(&mut buf), | 146 | _ => write!(buf, "{}", child).unwrap(), |
144 | }; | 147 | }; |
145 | } | 148 | } |
146 | 149 | ||