Skip to content

Commit 922ec61

Browse files
bors[bot]matklad
andauthored
Merge #2433
2433: Use Name::missing consistently r=matklad a=matklad Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents c0bb667 + 1d14fd1 commit 922ec61

File tree

7 files changed

+33
-52
lines changed

7 files changed

+33
-52
lines changed

crates/ra_hir/src/code_model.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ impl Struct {
330330
Some(self.module(db).krate())
331331
}
332332

333-
pub fn name(self, db: &impl DefDatabase) -> Option<Name> {
333+
pub fn name(self, db: &impl DefDatabase) -> Name {
334334
db.struct_data(self.id.into()).name.clone()
335335
}
336336

@@ -371,7 +371,7 @@ pub struct Union {
371371
}
372372

373373
impl Union {
374-
pub fn name(self, db: &impl DefDatabase) -> Option<Name> {
374+
pub fn name(self, db: &impl DefDatabase) -> Name {
375375
db.union_data(self.id).name.clone()
376376
}
377377

@@ -420,7 +420,7 @@ impl Enum {
420420
Some(self.module(db).krate())
421421
}
422422

423-
pub fn name(self, db: &impl DefDatabase) -> Option<Name> {
423+
pub fn name(self, db: &impl DefDatabase) -> Name {
424424
db.enum_data(self.id).name.clone()
425425
}
426426

@@ -433,11 +433,8 @@ impl Enum {
433433
}
434434

435435
pub fn variant(self, db: &impl DefDatabase, name: &Name) -> Option<EnumVariant> {
436-
db.enum_data(self.id)
437-
.variants
438-
.iter()
439-
.find(|(_id, data)| data.name.as_ref() == Some(name))
440-
.map(|(id, _)| EnumVariant { parent: self, id })
436+
let id = db.enum_data(self.id).variant(name)?;
437+
Some(EnumVariant { parent: self, id })
441438
}
442439

443440
pub fn ty(self, db: &impl HirDatabase) -> Type {
@@ -459,7 +456,7 @@ impl EnumVariant {
459456
self.parent
460457
}
461458

462-
pub fn name(self, db: &impl DefDatabase) -> Option<Name> {
459+
pub fn name(self, db: &impl DefDatabase) -> Name {
463460
db.enum_data(self.parent.id).variants[self.id].name.clone()
464461
}
465462

@@ -720,7 +717,7 @@ impl Trait {
720717
Module { id: self.id.module(db) }
721718
}
722719

723-
pub fn name(self, db: &impl DefDatabase) -> Option<Name> {
720+
pub fn name(self, db: &impl DefDatabase) -> Name {
724721
db.trait_data(self.id).name.clone()
725722
}
726723

crates/ra_hir_def/src/adt.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,19 @@ use crate::{
1818
/// Note that we use `StructData` for unions as well!
1919
#[derive(Debug, Clone, PartialEq, Eq)]
2020
pub struct StructData {
21-
pub name: Option<Name>,
21+
pub name: Name,
2222
pub variant_data: Arc<VariantData>,
2323
}
2424

2525
#[derive(Debug, Clone, PartialEq, Eq)]
2626
pub struct EnumData {
27-
pub name: Option<Name>,
27+
pub name: Name,
2828
pub variants: Arena<LocalEnumVariantId, EnumVariantData>,
2929
}
3030

3131
#[derive(Debug, Clone, PartialEq, Eq)]
3232
pub struct EnumVariantData {
33-
pub name: Option<Name>,
33+
pub name: Name,
3434
pub variant_data: Arc<VariantData>,
3535
}
3636

@@ -51,14 +51,14 @@ pub struct StructFieldData {
5151
impl StructData {
5252
pub(crate) fn struct_data_query(db: &impl DefDatabase, id: StructId) -> Arc<StructData> {
5353
let src = id.source(db);
54-
let name = src.value.name().map(|n| n.as_name());
54+
let name = src.value.name().map_or_else(Name::missing, |n| n.as_name());
5555
let variant_data = VariantData::new(src.value.kind());
5656
let variant_data = Arc::new(variant_data);
5757
Arc::new(StructData { name, variant_data })
5858
}
5959
pub(crate) fn union_data_query(db: &impl DefDatabase, id: UnionId) -> Arc<StructData> {
6060
let src = id.source(db);
61-
let name = src.value.name().map(|n| n.as_name());
61+
let name = src.value.name().map_or_else(Name::missing, |n| n.as_name());
6262
let variant_data = VariantData::new(
6363
src.value
6464
.record_field_def_list()
@@ -73,14 +73,14 @@ impl StructData {
7373
impl EnumData {
7474
pub(crate) fn enum_data_query(db: &impl DefDatabase, e: EnumId) -> Arc<EnumData> {
7575
let src = e.source(db);
76-
let name = src.value.name().map(|n| n.as_name());
76+
let name = src.value.name().map_or_else(Name::missing, |n| n.as_name());
7777
let mut trace = Trace::new_for_arena();
7878
lower_enum(&mut trace, &src.value);
7979
Arc::new(EnumData { name, variants: trace.into_arena() })
8080
}
8181

82-
pub(crate) fn variant(&self, name: &Name) -> Option<LocalEnumVariantId> {
83-
let (id, _) = self.variants.iter().find(|(_id, data)| data.name.as_ref() == Some(name))?;
82+
pub fn variant(&self, name: &Name) -> Option<LocalEnumVariantId> {
83+
let (id, _) = self.variants.iter().find(|(_id, data)| &data.name == name)?;
8484
Some(id)
8585
}
8686
}
@@ -104,7 +104,7 @@ fn lower_enum(
104104
trace.alloc(
105105
|| var.clone(),
106106
|| EnumVariantData {
107-
name: var.name().map(|it| it.as_name()),
107+
name: var.name().map_or_else(Name::missing, |it| it.as_name()),
108108
variant_data: Arc::new(VariantData::new(var.kind())),
109109
},
110110
);

crates/ra_hir_def/src/data.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,15 @@ impl TypeAliasData {
8686

8787
#[derive(Debug, Clone, PartialEq, Eq)]
8888
pub struct TraitData {
89-
pub name: Option<Name>,
89+
pub name: Name,
9090
pub items: Vec<(Name, AssocItemId)>,
9191
pub auto: bool,
9292
}
9393

9494
impl TraitData {
9595
pub(crate) fn trait_data_query(db: &impl DefDatabase, tr: TraitId) -> Arc<TraitData> {
9696
let src = tr.source(db);
97-
let name = src.value.name().map(|n| n.as_name());
97+
let name = src.value.name().map_or_else(Name::missing, |n| n.as_name());
9898
let auto = src.value.is_auto();
9999
let ast_id_map = db.ast_id_map(src.file_id);
100100

@@ -104,7 +104,7 @@ impl TraitData {
104104
.impl_items()
105105
.map(|item_node| match item_node {
106106
ast::ImplItem::FnDef(it) => {
107-
let name = it.name().map(|it| it.as_name()).unwrap_or_else(Name::missing);
107+
let name = it.name().map_or_else(Name::missing, |it| it.as_name());
108108
let def = FunctionLoc {
109109
container,
110110
ast_id: AstId::new(src.file_id, ast_id_map.ast_id(&it)),
@@ -114,7 +114,7 @@ impl TraitData {
114114
(name, def)
115115
}
116116
ast::ImplItem::ConstDef(it) => {
117-
let name = it.name().map(|it| it.as_name()).unwrap_or_else(Name::missing);
117+
let name = it.name().map_or_else(Name::missing, |it| it.as_name());
118118
let def = ConstLoc {
119119
container,
120120
ast_id: AstId::new(src.file_id, ast_id_map.ast_id(&it)),
@@ -124,7 +124,7 @@ impl TraitData {
124124
(name, def)
125125
}
126126
ast::ImplItem::TypeAliasDef(it) => {
127-
let name = it.name().map(|it| it.as_name()).unwrap_or_else(Name::missing);
127+
let name = it.name().map_or_else(Name::missing, |it| it.as_name());
128128
let def = TypeAliasLoc {
129129
container,
130130
ast_id: AstId::new(src.file_id, ast_id_map.ast_id(&it)),
@@ -214,6 +214,7 @@ impl ImplData {
214214

215215
#[derive(Debug, Clone, PartialEq, Eq)]
216216
pub struct ConstData {
217+
/// const _: () = ();
217218
pub name: Option<Name>,
218219
pub type_ref: TypeRef,
219220
}

crates/ra_hir_def/src/nameres/collector.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ where
362362
.variants
363363
.iter()
364364
.filter_map(|(local_id, variant_data)| {
365-
let name = variant_data.name.clone()?;
365+
let name = variant_data.name.clone();
366366
let variant = EnumVariantId { parent: e, local_id };
367367
let res = Resolution {
368368
def: PerNs::both(variant.into(), variant.into()),

crates/ra_hir_ty/src/lib.rs

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -901,12 +901,10 @@ impl HirDisplay for ApplicationTy {
901901
let sig = f.db.callable_item_signature(def);
902902
let name = match def {
903903
CallableDef::FunctionId(ff) => f.db.function_data(ff).name.clone(),
904-
CallableDef::StructId(s) => {
905-
f.db.struct_data(s).name.clone().unwrap_or_else(Name::missing)
906-
}
904+
CallableDef::StructId(s) => f.db.struct_data(s).name.clone(),
907905
CallableDef::EnumVariantId(e) => {
908906
let enum_data = f.db.enum_data(e.parent);
909-
enum_data.variants[e.local_id].name.clone().unwrap_or_else(Name::missing)
907+
enum_data.variants[e.local_id].name.clone()
910908
}
911909
};
912910
match def {
@@ -929,8 +927,7 @@ impl HirDisplay for ApplicationTy {
929927
AdtId::StructId(it) => f.db.struct_data(it).name.clone(),
930928
AdtId::UnionId(it) => f.db.union_data(it).name.clone(),
931929
AdtId::EnumId(it) => f.db.enum_data(it).name.clone(),
932-
}
933-
.unwrap_or_else(Name::missing);
930+
};
934931
write!(f, "{}", name)?;
935932
if self.parameters.len() > 0 {
936933
write!(f, "<")?;
@@ -943,7 +940,7 @@ impl HirDisplay for ApplicationTy {
943940
ContainerId::TraitId(it) => it,
944941
_ => panic!("not an associated type"),
945942
};
946-
let trait_name = f.db.trait_data(trait_).name.clone().unwrap_or_else(Name::missing);
943+
let trait_name = f.db.trait_data(trait_).name.clone();
947944
let name = f.db.type_alias_data(type_alias).name.clone();
948945
write!(f, "{}::{}", trait_name, name)?;
949946
if self.parameters.len() > 0 {
@@ -971,8 +968,7 @@ impl HirDisplay for ProjectionTy {
971968
return write!(f, "…");
972969
}
973970

974-
let trait_name =
975-
f.db.trait_data(self.trait_(f.db)).name.clone().unwrap_or_else(Name::missing);
971+
let trait_name = f.db.trait_data(self.trait_(f.db)).name.clone();
976972
write!(f, "<{} as {}", self.parameters[0].display(f.db), trait_name,)?;
977973
if self.parameters.len() > 1 {
978974
write!(f, "<")?;
@@ -1021,14 +1017,7 @@ impl HirDisplay for Ty {
10211017
// We assume that the self type is $0 (i.e. the
10221018
// existential) here, which is the only thing that's
10231019
// possible in actual Rust, and hence don't print it
1024-
write!(
1025-
f,
1026-
"{}",
1027-
f.db.trait_data(trait_ref.trait_)
1028-
.name
1029-
.clone()
1030-
.unwrap_or_else(Name::missing)
1031-
)?;
1020+
write!(f, "{}", f.db.trait_data(trait_ref.trait_).name.clone())?;
10321021
if trait_ref.substs.len() > 1 {
10331022
write!(f, "<")?;
10341023
f.write_joined(&trait_ref.substs[1..], ", ")?;
@@ -1088,7 +1077,7 @@ impl TraitRef {
10881077
} else {
10891078
write!(f, ": ")?;
10901079
}
1091-
write!(f, "{}", f.db.trait_data(self.trait_).name.clone().unwrap_or_else(Name::missing))?;
1080+
write!(f, "{}", f.db.trait_data(self.trait_).name.clone())?;
10921081
if self.substs.len() > 1 {
10931082
write!(f, "<")?;
10941083
f.write_joined(&self.substs[1..], ", ")?;

crates/ra_ide/src/completion/presentation.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,7 @@ impl Completions {
267267

268268
pub(crate) fn add_enum_variant(&mut self, ctx: &CompletionContext, variant: hir::EnumVariant) {
269269
let is_deprecated = is_deprecated(variant, ctx.db);
270-
let name = match variant.name(ctx.db) {
271-
Some(it) => it,
272-
None => return,
273-
};
270+
let name = variant.name(ctx.db);
274271
let detail_types = variant.fields(ctx.db).into_iter().map(|field| field.ty(ctx.db));
275272
let detail = join(detail_types.map(|t| t.display(ctx.db).to_string()))
276273
.separator(", ")

crates/ra_ide/src/display/function_signature.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,9 @@ impl FunctionSignature {
9393
_ => (),
9494
};
9595

96-
let parent_name = match variant.parent_enum(db).name(db) {
97-
Some(name) => name.to_string(),
98-
None => "missing".into(),
99-
};
96+
let parent_name = variant.parent_enum(db).name(db).to_string();
10097

101-
let name = format!("{}::{}", parent_name, variant.name(db).unwrap());
98+
let name = format!("{}::{}", parent_name, variant.name(db));
10299

103100
let params = variant
104101
.fields(db)

0 commit comments

Comments
 (0)