diff options
author | Jonas Schievink <[email protected]> | 2021-04-20 15:25:24 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2021-04-20 15:25:24 +0100 |
commit | 66241589690bff9488b64101b281a7a2b3a2393f (patch) | |
tree | bb45883cf4e4e17d461e2e3925d606b383bc92ce /crates | |
parent | 1834938d6f37c0d308e407e50514180d0f08d96f (diff) |
Fix panic in `replace_derive_with_manual_impl`
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs b/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs index 870a8d4ff..47d8b9c91 100644 --- a/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs | |||
@@ -47,6 +47,11 @@ pub(crate) fn replace_derive_with_manual_impl( | |||
47 | return None; | 47 | return None; |
48 | } | 48 | } |
49 | 49 | ||
50 | if !args.syntax().text_range().contains(ctx.offset()) { | ||
51 | cov_mark::hit!(outside_of_attr_args); | ||
52 | return None; | ||
53 | } | ||
54 | |||
50 | let trait_token = args.syntax().token_at_offset(ctx.offset()).find(|t| t.kind() == IDENT)?; | 55 | let trait_token = args.syntax().token_at_offset(ctx.offset()).find(|t| t.kind() == IDENT)?; |
51 | let trait_name = trait_token.text(); | 56 | let trait_name = trait_token.text(); |
52 | 57 | ||
@@ -396,4 +401,16 @@ struct Foo {} | |||
396 | ", | 401 | ", |
397 | ) | 402 | ) |
398 | } | 403 | } |
404 | |||
405 | #[test] | ||
406 | fn works_at_start_of_file() { | ||
407 | cov_mark::check!(outside_of_attr_args); | ||
408 | check_assist_not_applicable( | ||
409 | replace_derive_with_manual_impl, | ||
410 | r#" | ||
411 | $0#[derive(Debug)] | ||
412 | struct S; | ||
413 | "#, | ||
414 | ); | ||
415 | } | ||
399 | } | 416 | } |