about summary refs log tree commit diff
diff options
context:
space:
mode:
author龙方淞 <longfangsong@icloud.com>2021-10-06 10:06:46 +0800
committerGitHub <noreply@github.com>2021-10-06 10:06:46 +0800
commitfab238adf632f05993af992dca2f411e5ac02dc7 (patch)
tree881caed5b987471f07960b735569677509c7ba73
parent4d1a4dc0d6d750514e010d1e2be50a8038109b5e (diff)
downloadrust-fab238adf632f05993af992dca2f411e5ac02dc7.tar.gz
rust-fab238adf632f05993af992dca2f411e5ac02dc7.zip
Update crates/ide_assists/src/handlers/generate_constant.rs
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
-rw-r--r--crates/ide_assists/src/handlers/generate_constant.rs5
1 files changed, 2 insertions, 3 deletions
diff --git a/crates/ide_assists/src/handlers/generate_constant.rs b/crates/ide_assists/src/handlers/generate_constant.rs
index 2e3e3be48d1..a296f1cefcb 100644
--- a/crates/ide_assists/src/handlers/generate_constant.rs
+++ b/crates/ide_assists/src/handlers/generate_constant.rs
@@ -31,10 +31,9 @@ use syntax::{
 // ```
 
 pub(crate) fn generate_constant(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
-    let statement = ctx.find_node_at_offset::<ast::Stmt>()?;
-    let arg_list = ctx.find_node_at_offset::<ast::ArgList>()?;
-    let expr = ctx.find_node_at_offset::<ast::Expr>()?;
     let constant_token = ctx.find_node_at_offset::<ast::NameRef>()?;
+    let expr = constant_token.syntax().ancestors().find_map(ast::Expr::cast)?;
+    let statement = expr.syntax().ancestors().find_map(ast::Stmt::cast)?;
     let ty = ctx.sema.type_of_expr(&expr)?;
     let scope = ctx.sema.scope(statement.syntax());
     let module = scope.module()?;