diff --git a/crates/ide_completion/src/completions/flyimport.rs b/crates/ide_completion/src/completions/flyimport.rs index 0118d94641f..392db66a8d1 100644 --- a/crates/ide_completion/src/completions/flyimport.rs +++ b/crates/ide_completion/src/completions/flyimport.rs @@ -186,17 +186,12 @@ fn import_assets(ctx: &CompletionContext, fuzzy_name: String) -> Option s.syntax().clone(), - hir::ModuleSource::Module(m) => m.syntax().clone(), - hir::ModuleSource::BlockExpr(b) => b.syntax().clone(), - }; let assets_for_path = ImportAssets::for_fuzzy_path( current_module, ctx.path_qual().cloned(), fuzzy_name, &ctx.sema, - approximate_node, + ctx.token.parent()?, )?; if matches!(assets_for_path.import_candidate(), ImportCandidate::Path(_)) @@ -1189,4 +1184,23 @@ impl Private for T {} expect![[r#""#]], ); } + + #[test] + fn regression_9760() { + check( + r#" +struct Struct; +fn main() {} + +mod mud { + fn func() { + let struct_instance = Stru$0 + } +} +"#, + expect![[r#" + st Struct (use crate::Struct) + "#]], + ); + } }