diff options
| author | Brandon <[email protected]> | 2021-04-08 17:27:04 +0100 |
|---|---|---|
| committer | Brandon <[email protected]> | 2021-04-08 17:27:04 +0100 |
| commit | 24ab69c608e029d0146cd6b5b9e89f32a0483a34 (patch) | |
| tree | 03dbb8ce0ed41d6450ece457d6eee94b3674ce27 /crates/ide_assists/src | |
| parent | 1ccfd0cedae91065d2484920484dfdaee116d590 (diff) | |
Add FIXME for macro case
Diffstat (limited to 'crates/ide_assists/src')
| -rw-r--r-- | crates/ide_assists/src/handlers/extract_function.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/ide_assists/src/handlers/extract_function.rs b/crates/ide_assists/src/handlers/extract_function.rs index d84f51eae..8e295098f 100644 --- a/crates/ide_assists/src/handlers/extract_function.rs +++ b/crates/ide_assists/src/handlers/extract_function.rs | |||
| @@ -729,6 +729,14 @@ fn reference_is_exclusive( | |||
| 729 | 729 | ||
| 730 | /// checks if this expr requires `&mut` access, recurses on field access | 730 | /// checks if this expr requires `&mut` access, recurses on field access |
| 731 | fn expr_require_exclusive_access(ctx: &AssistContext, expr: &ast::Expr) -> Option<bool> { | 731 | fn expr_require_exclusive_access(ctx: &AssistContext, expr: &ast::Expr) -> Option<bool> { |
| 732 | match expr { | ||
| 733 | ast::Expr::MacroCall(_) => { | ||
| 734 | // FIXME: expand macro and check output for mutable usages of the variable? | ||
| 735 | return None; | ||
| 736 | } | ||
| 737 | _ => (), | ||
| 738 | } | ||
| 739 | |||
| 732 | let parent = expr.syntax().parent()?; | 740 | let parent = expr.syntax().parent()?; |
| 733 | 741 | ||
| 734 | if let Some(bin_expr) = ast::BinExpr::cast(parent.clone()) { | 742 | if let Some(bin_expr) = ast::BinExpr::cast(parent.clone()) { |
| @@ -804,6 +812,11 @@ fn path_element_of_reference( | |||
| 804 | stdx::never!(false, "cannot find path parent of variable usage: {:?}", token); | 812 | stdx::never!(false, "cannot find path parent of variable usage: {:?}", token); |
| 805 | None | 813 | None |
| 806 | })?; | 814 | })?; |
| 815 | stdx::always!( | ||
| 816 | matches!(path, ast::Expr::PathExpr(_) | ast::Expr::MacroCall(_)), | ||
| 817 | "unexpected expression type for variable usage: {:?}", | ||
| 818 | path | ||
| 819 | ); | ||
| 807 | Some(path) | 820 | Some(path) |
| 808 | } | 821 | } |
| 809 | 822 | ||
