Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/ast/edit_in_place.rs')
-rw-r--r--crates/syntax/src/ast/edit_in_place.rs36
1 files changed, 4 insertions, 32 deletions
diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs
index 160f000387..1cd8146f68 100644
--- a/crates/syntax/src/ast/edit_in_place.rs
+++ b/crates/syntax/src/ast/edit_in_place.rs
@@ -99,38 +99,10 @@ impl GenericParamsOwnerEdit for ast::Trait {
fn get_or_create_where_clause(&self) -> ast::WhereClause {
if self.where_clause().is_none() {
- let position = match self.assoc_item_list() {
- Some(items) => Position::before(items.syntax()),
- None => Position::last_child_of(self.syntax()),
- };
- create_where_clause(position);
- }
- self.where_clause().unwrap()
- }
-}
-
-impl GenericParamsOwnerEdit for ast::TraitAlias {
- fn get_or_create_generic_param_list(&self) -> ast::GenericParamList {
- match self.generic_param_list() {
- Some(it) => it,
- None => {
- let position = if let Some(name) = self.name() {
- Position::after(name.syntax)
- } else if let Some(trait_token) = self.trait_token() {
- Position::after(trait_token)
- } else {
- Position::last_child_of(self.syntax())
- };
- create_generic_param_list(position)
- }
- }
- }
-
- fn get_or_create_where_clause(&self) -> ast::WhereClause {
- if self.where_clause().is_none() {
- let position = match self.semicolon_token() {
- Some(tok) => Position::before(tok),
- None => Position::last_child_of(self.syntax()),
+ let position = match (self.assoc_item_list(), self.semicolon_token()) {
+ (Some(items), _) => Position::before(items.syntax()),
+ (_, Some(tok)) => Position::before(tok),
+ (None, None) => Position::last_child_of(self.syntax()),
};
create_where_clause(position);
}