Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/syntax_helpers/suggest_name.rs')
-rw-r--r--crates/ide-db/src/syntax_helpers/suggest_name.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/crates/ide-db/src/syntax_helpers/suggest_name.rs b/crates/ide-db/src/syntax_helpers/suggest_name.rs
index 1a0ef55a8b..273328a8d2 100644
--- a/crates/ide-db/src/syntax_helpers/suggest_name.rs
+++ b/crates/ide-db/src/syntax_helpers/suggest_name.rs
@@ -197,10 +197,19 @@ impl NameGenerator {
expr: &ast::Expr,
sema: &Semantics<'_, RootDatabase>,
) -> SmolStr {
+ self.try_for_variable(expr, sema).unwrap_or(SmolStr::new_static("var_name"))
+ }
+
+ /// Similar to `for_variable`, but fallback returns `None`
+ pub fn try_for_variable(
+ &mut self,
+ expr: &ast::Expr,
+ sema: &Semantics<'_, RootDatabase>,
+ ) -> Option<SmolStr> {
// `from_param` does not benefit from stripping it need the largest
// context possible so we check firstmost
if let Some(name) = from_param(expr, sema) {
- return self.suggest_name(&name);
+ return Some(self.suggest_name(&name));
}
let mut next_expr = Some(expr.clone());
@@ -209,7 +218,7 @@ impl NameGenerator {
.or_else(|| from_type(&expr, sema))
.or_else(|| from_field_name(&expr));
if let Some(name) = name {
- return self.suggest_name(&name);
+ return Some(self.suggest_name(&name));
}
match expr {
@@ -229,7 +238,7 @@ impl NameGenerator {
}
}
- self.suggest_name("var_name")
+ None
}
/// Insert a name into the pool