Skip to content

Commit a153b18

Browse files
bors[bot]Veykril
andauthored
Merge #11566
11566: minor: Make hir::Local::name infallible r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
2 parents 719babd + 47ce443 commit a153b18

File tree

6 files changed

+28
-28
lines changed

6 files changed

+28
-28
lines changed

crates/hir/src/lib.rs

+14-9
Original file line numberDiff line numberDiff line change
@@ -2047,10 +2047,13 @@ impl Local {
20472047
pub fn is_param(self, db: &dyn HirDatabase) -> bool {
20482048
let src = self.source(db);
20492049
match src.value {
2050-
Either::Left(bind_pat) => {
2051-
bind_pat.syntax().ancestors().any(|it| ast::Param::can_cast(it.kind()))
2052-
}
2053-
Either::Right(_self_param) => true,
2050+
Either::Left(pat) => pat
2051+
.syntax()
2052+
.ancestors()
2053+
.map(|it| it.kind())
2054+
.take_while(|&kind| ast::Pat::can_cast(kind) || ast::Param::can_cast(kind))
2055+
.any(ast::Param::can_cast),
2056+
Either::Right(_) => true,
20542057
}
20552058
}
20562059

@@ -2061,17 +2064,19 @@ impl Local {
20612064
}
20622065
}
20632066

2064-
// FIXME: why is this an option? It shouldn't be?
2065-
pub fn name(self, db: &dyn HirDatabase) -> Option<Name> {
2067+
pub fn name(self, db: &dyn HirDatabase) -> Name {
20662068
let body = db.body(self.parent);
20672069
match &body[self.pat_id] {
2068-
Pat::Bind { name, .. } => Some(name.clone()),
2069-
_ => None,
2070+
Pat::Bind { name, .. } => name.clone(),
2071+
_ => {
2072+
stdx::never!("hir::Local is missing a name!");
2073+
Name::missing()
2074+
}
20702075
}
20712076
}
20722077

20732078
pub fn is_self(self, db: &dyn HirDatabase) -> bool {
2074-
self.name(db) == Some(name![self])
2079+
self.name(db) == name![self]
20752080
}
20762081

20772082
pub fn is_mut(self, db: &dyn HirDatabase) -> bool {

crates/ide/src/hover/render.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ fn local(db: &RootDatabase, it: hir::Local) -> Option<Markup> {
480480
let is_mut = if it.is_mut(db) { "mut " } else { "" };
481481
let desc = match it.source(db).value {
482482
Either::Left(ident) => {
483-
let name = it.name(db).unwrap();
483+
let name = it.name(db);
484484
let let_kw = if ident
485485
.syntax()
486486
.parent()

crates/ide/src/navigation_target.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -390,10 +390,7 @@ impl ToNav for hir::Local {
390390
let FileRange { file_id, range: full_range } =
391391
InFile::new(file_id, node).original_file_range(db);
392392

393-
let name = match self.name(db) {
394-
Some(it) => it.to_smol_str(),
395-
None => "".into(),
396-
};
393+
let name = self.name(db).to_smol_str();
397394
let kind = if self.is_self(db) {
398395
SymbolKind::SelfParam
399396
} else if self.is_param(db) {

crates/ide/src/syntax_highlighting/highlight.rs

+7-9
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,9 @@ fn highlight_name_ref(
235235
let mut h = match name_class {
236236
NameRefClass::Definition(def) => {
237237
if let Definition::Local(local) = &def {
238-
if let Some(name) = local.name(db) {
239-
let shadow_count = bindings_shadow_count.entry(name.clone()).or_default();
240-
*binding_hash = Some(calc_binding_hash(&name, *shadow_count))
241-
}
238+
let name = local.name(db);
239+
let shadow_count = bindings_shadow_count.entry(name.clone()).or_default();
240+
*binding_hash = Some(calc_binding_hash(&name, *shadow_count))
242241
};
243242

244243
let mut h = highlight_def(sema, krate, def);
@@ -288,11 +287,10 @@ fn highlight_name(
288287
) -> Highlight {
289288
let name_kind = NameClass::classify(sema, &name);
290289
if let Some(NameClass::Definition(Definition::Local(local))) = &name_kind {
291-
if let Some(name) = local.name(sema.db) {
292-
let shadow_count = bindings_shadow_count.entry(name.clone()).or_default();
293-
*shadow_count += 1;
294-
*binding_hash = Some(calc_binding_hash(&name, *shadow_count))
295-
}
290+
let name = local.name(sema.db);
291+
let shadow_count = bindings_shadow_count.entry(name.clone()).or_default();
292+
*shadow_count += 1;
293+
*binding_hash = Some(calc_binding_hash(&name, *shadow_count))
296294
};
297295
match name_kind {
298296
Some(NameClass::Definition(def)) => {

crates/ide_assists/src/handlers/extract_function.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ impl Param {
393393
}
394394

395395
fn to_param(&self, ctx: &AssistContext, module: hir::Module) -> ast::Param {
396-
let var = self.var.name(ctx.db()).unwrap().to_string();
396+
let var = self.var.name(ctx.db()).to_string();
397397
let var_name = make::name(&var);
398398
let pat = match self.kind() {
399399
ParamKind::MutValue => make::ident_pat(false, true, var_name),
@@ -1144,12 +1144,12 @@ fn make_call(ctx: &AssistContext, fun: &Function, indent: IndentLevel) -> String
11441144
match fun.outliving_locals.as_slice() {
11451145
[] => {}
11461146
[var] => {
1147-
format_to!(buf, "let {}{} = ", mut_modifier(var), var.local.name(ctx.db()).unwrap())
1147+
format_to!(buf, "let {}{} = ", mut_modifier(var), var.local.name(ctx.db()))
11481148
}
11491149
vars => {
11501150
buf.push_str("let (");
11511151
let bindings = vars.iter().format_with(", ", |local, f| {
1152-
f(&format_args!("{}{}", mut_modifier(local), local.local.name(ctx.db()).unwrap()))
1152+
f(&format_args!("{}{}", mut_modifier(local), local.local.name(ctx.db())))
11531153
});
11541154
format_to!(buf, "{}", bindings);
11551155
buf.push_str(") = ");
@@ -1288,7 +1288,7 @@ impl FlowHandler {
12881288
}
12891289

12901290
fn path_expr_from_local(ctx: &AssistContext, var: Local) -> ast::Expr {
1291-
let name = var.name(ctx.db()).unwrap().to_string();
1291+
let name = var.name(ctx.db()).to_string();
12921292
make::expr_path(make::ext::ident_path(&name))
12931293
}
12941294

crates/ide_db/src/defs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ impl Definition {
106106
Definition::TypeAlias(it) => it.name(db),
107107
Definition::BuiltinType(it) => it.name(),
108108
Definition::SelfType(_) => return None,
109-
Definition::Local(it) => it.name(db)?,
109+
Definition::Local(it) => it.name(db),
110110
Definition::GenericParam(it) => it.name(db),
111111
Definition::Label(it) => it.name(db),
112112
Definition::BuiltinAttr(_) => return None, // FIXME

0 commit comments

Comments
 (0)