Skip to content

Commit 2a78173

Browse files
committed
v2
1 parent 94b3481 commit 2a78173

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

crates/ide-assists/src/handlers/generate_derive.rs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,38 +34,39 @@ pub(crate) fn generate_derive(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt
3434
.map(|(_name, arg)| arg)
3535
.next();
3636

37-
let (derive, delimiter) = match &derive_attr {
38-
None => {
39-
let derive = make::attr_outer(make::meta_token_tree(
40-
make::ext::ident_path("derive"),
41-
make::token_tree(T!['('], vec![]).clone_for_update(),
42-
))
43-
.clone_for_update();
44-
let delimiter = derive.meta()?.token_tree()?.r_paren_token()?;
45-
(derive, delimiter)
46-
}
47-
Some(tt) => {
48-
// Create an outer attribute just so that we avoid using
49-
// unwrap in edit closure.
50-
let _derive = make::attr_outer(make::meta_token_tree(
51-
make::ext::ident_path("derive"),
52-
make::token_tree(T!['('], vec![]),
53-
));
54-
(_derive, tt.right_delimiter_token()?)
55-
}
37+
let delimiter = match &derive_attr {
38+
None => None,
39+
Some(tt) => Some(tt.right_delimiter_token()?),
5640
};
5741

5842
acc.add(AssistId("generate_derive", AssistKind::Generate), "Add `#[derive]`", target, |edit| {
5943
match derive_attr {
6044
None => {
45+
let derive = make::attr_outer(make::meta_token_tree(
46+
make::ext::ident_path("derive"),
47+
make::token_tree(T!['('], vec![]).clone_for_update(),
48+
))
49+
.clone_for_update();
50+
6151
let nominal = edit.make_mut(nominal);
6252
nominal.add_attr(derive.clone());
6353

54+
let delimiter = derive
55+
.meta()
56+
.expect("make::attr_outer was expected to have Meta")
57+
.token_tree()
58+
.expect("failed to get token tree out of Meta")
59+
.r_paren_token()
60+
.expect("make::attr_outer was expected to have a R_PAREN");
61+
6462
edit.add_tabstop_before_token(cap, delimiter);
6563
}
6664
Some(_) => {
6765
// Just move the cursor.
68-
edit.add_tabstop_before_token(cap, delimiter);
66+
edit.add_tabstop_before_token(
67+
cap,
68+
delimiter.expect("Right delim token could not be found."),
69+
);
6970
}
7071
};
7172
})

0 commit comments

Comments
 (0)