Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 5fddf3e

Browse files
committed
fix: Don't panic for different/missing delimiters
1 parent 2eb5064 commit 5fddf3e

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

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

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ pub(crate) fn generate_derive(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt
5353
Some(tt) => {
5454
// Just move the cursor.
5555
let tt = edit.make_mut(tt);
56-
edit.add_tabstop_before_token(cap, tt.r_paren_token().unwrap());
56+
edit.add_tabstop_before_token(cap, tt.right_delimiter_token().unwrap());
5757
}
5858
};
5959
})
@@ -102,6 +102,38 @@ mod m {
102102
);
103103
}
104104

105+
#[test]
106+
fn add_derive_existing_with_brackets() {
107+
check_assist(
108+
generate_derive,
109+
"
110+
#[derive[Clone]]
111+
struct Foo { a: i32$0, }
112+
",
113+
"
114+
#[derive[Clone$0]]
115+
struct Foo { a: i32, }
116+
",
117+
);
118+
}
119+
120+
#[test]
121+
fn add_derive_existing_missing_delimiter() {
122+
// since `#[derive]` isn't a simple attr call (i.e. `#[derive()]`)
123+
// we don't consider it as a proper derive attr and generate a new
124+
// one instead
125+
check_assist(
126+
generate_derive,
127+
"
128+
#[derive]
129+
struct Foo { a: i32$0, }",
130+
"
131+
#[derive]
132+
#[derive($0)]
133+
struct Foo { a: i32, }",
134+
);
135+
}
136+
105137
#[test]
106138
fn add_derive_new_with_doc_comment() {
107139
check_assist(

0 commit comments

Comments
 (0)