diff options
| author | Young-Flash <dongyang@apache.org> | 2024-01-18 17:43:15 +0800 |
|---|---|---|
| committer | Young-Flash <dongyang@apache.org> | 2024-01-18 17:43:15 +0800 |
| commit | bd264031309fa2abc89851f95ca5cba6d15181cc (patch) | |
| tree | de9993527ee6cad87e73a696b7ed9ca930ca0e27 | |
| parent | ae6e73772432cfe35bb0ff6de6fdcfa908642b67 (diff) | |
| download | rust-bd264031309fa2abc89851f95ca5cba6d15181cc.tar.gz rust-bd264031309fa2abc89851f95ca5cba6d15181cc.zip | |
fix panic with reference in macro
| -rw-r--r-- | crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs index 65e2a018477..4961e05e2f7 100644 --- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs @@ -412,6 +412,14 @@ fn reference_to_node( ) -> Option<(ast::PathSegment, SyntaxNode, hir::Module)> { let segment = reference.name.as_name_ref()?.syntax().parent().and_then(ast::PathSegment::cast)?; + + // filter out the reference in marco + let s_range = segment.syntax().text_range(); + let origin_range = sema.original_range(segment.syntax()).range; + if s_range != origin_range { + return None; + } + let parent = segment.parent_path().syntax().parent()?; let expr_or_pat = match_ast! { match parent { |
