Skip to content

Commit bf9b457

Browse files
committed
Remove Option<...> from result of Crate::root_module
There doesn't seem to be any need for it, and removing it simplies several paths of code that depend on it.
1 parent 6cde0b1 commit bf9b457

File tree

8 files changed

+22
-23
lines changed

8 files changed

+22
-23
lines changed

crates/ra_assists/src/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ pub use prelude::*;
257257
.find(|dep| &dep.name.to_string() == std_crate)?
258258
.krate;
259259

260-
let mut module = std_crate.root_module(db)?;
260+
let mut module = std_crate.root_module(db);
261261
for segment in path {
262262
module = module.children(db).find_map(|child| {
263263
let name = child.name(db)?;

crates/ra_hir/src/code_model.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ impl Crate {
8383
.collect()
8484
}
8585

86-
pub fn root_module(self, db: &dyn HirDatabase) -> Option<Module> {
86+
pub fn root_module(self, db: &dyn HirDatabase) -> Module {
8787
let module_id = db.crate_def_map(self.id).root;
88-
Some(Module::new(self, module_id))
88+
Module::new(self, module_id)
8989
}
9090

9191
pub fn root_file(self, db: &dyn HirDatabase) -> FileId {

crates/ra_ide/src/goto_definition.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ pub(crate) fn goto_definition(
4040
reference_definition(&sema, &name_ref).to_vec()
4141
},
4242
ast::Name(name) => {
43-
let def = classify_name(&sema, &name)?.definition(sema.db)?;
43+
let def = classify_name(&sema, &name)?.definition(sema.db);
4444
let nav = def.try_to_nav(sema.db)?;
4545
vec![nav]
4646
},
@@ -82,7 +82,8 @@ pub(crate) fn reference_definition(
8282
name_ref: &ast::NameRef,
8383
) -> ReferenceResult {
8484
let name_kind = classify_name_ref(sema, name_ref);
85-
if let Some(def) = name_kind.and_then(|def| def.definition(sema.db)) {
85+
if let Some(def) = name_kind {
86+
let def = def.definition(sema.db);
8687
return match def.try_to_nav(sema.db) {
8788
Some(nav) => ReferenceResult::Exact(nav),
8889
None => ReferenceResult::Approximate(Vec::new()),

crates/ra_ide/src/hover.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeIn
8585
let node = token.parent();
8686
let definition = match_ast! {
8787
match node {
88-
ast::NameRef(name_ref) => classify_name_ref(&sema, &name_ref).and_then(|d| d.definition(sema.db)),
89-
ast::Name(name) => classify_name(&sema, &name).and_then(|d| d.definition(sema.db)),
88+
ast::NameRef(name_ref) => classify_name_ref(&sema, &name_ref).map(|d| d.definition(sema.db)),
89+
ast::Name(name) => classify_name(&sema, &name).map(|d| d.definition(sema.db)),
9090
_ => None,
9191
}
9292
};

crates/ra_ide/src/references.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ fn find_name(
130130
opt_name: Option<ast::Name>,
131131
) -> Option<RangeInfo<Definition>> {
132132
if let Some(name) = opt_name {
133-
let def = classify_name(sema, &name)?.definition(sema.db)?;
133+
let def = classify_name(sema, &name)?.definition(sema.db);
134134
let range = name.syntax().text_range();
135135
return Some(RangeInfo::new(range, def));
136136
}
137137
let name_ref =
138138
sema.find_node_at_offset_with_descend::<ast::NameRef>(&syntax, position.offset)?;
139-
let def = classify_name_ref(sema, &name_ref)?.definition(sema.db)?;
139+
let def = classify_name_ref(sema, &name_ref)?.definition(sema.db);
140140
let range = name_ref.syntax().text_range();
141141
Some(RangeInfo::new(range, def))
142142
}

crates/ra_ide_db/src/defs.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,19 @@ pub enum NameClass {
9393
impl NameClass {
9494
pub fn into_definition(self, db: &dyn HirDatabase) -> Option<Definition> {
9595
Some(match self {
96-
NameClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db)?.into()),
96+
NameClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db).into()),
9797
NameClass::Definition(it) => it,
9898
NameClass::ConstReference(_) => return None,
9999
NameClass::FieldShorthand { local, field: _ } => Definition::Local(local),
100100
})
101101
}
102102

103-
pub fn definition(self, db: &dyn HirDatabase) -> Option<Definition> {
104-
Some(match self {
105-
NameClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db)?.into()),
103+
pub fn definition(self, db: &dyn HirDatabase) -> Definition {
104+
match self {
105+
NameClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db).into()),
106106
NameClass::Definition(it) | NameClass::ConstReference(it) => it,
107107
NameClass::FieldShorthand { local: _, field } => field,
108-
})
108+
}
109109
}
110110
}
111111

@@ -148,7 +148,7 @@ pub fn classify_name(sema: &Semantics<RootDatabase>, name: &ast::Name) -> Option
148148
})
149149
.and_then(|name_ref| classify_name_ref(sema, &name_ref))?;
150150

151-
Some(NameClass::Definition(name_ref_class.definition(sema.db)?))
151+
Some(NameClass::Definition(name_ref_class.definition(sema.db)))
152152
} else {
153153
let extern_crate = it.syntax().parent().and_then(ast::ExternCrate::cast)?;
154154
let resolved = sema.resolve_extern_crate(&extern_crate)?;
@@ -234,14 +234,12 @@ pub enum NameRefClass {
234234
}
235235

236236
impl NameRefClass {
237-
pub fn definition(self, db: &dyn HirDatabase) -> Option<Definition> {
238-
Some(match self {
239-
NameRefClass::ExternCrate(krate) => {
240-
Definition::ModuleDef(krate.root_module(db)?.into())
241-
}
237+
pub fn definition(self, db: &dyn HirDatabase) -> Definition {
238+
match self {
239+
NameRefClass::ExternCrate(krate) => Definition::ModuleDef(krate.root_module(db).into()),
242240
NameRefClass::Definition(def) => def,
243241
NameRefClass::FieldShorthand { local, field: _ } => Definition::Local(local),
244-
})
242+
}
245243
}
246244
}
247245

crates/rust-analyzer/src/cli/analysis_stats.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ impl AnalysisStatsCmd {
7272
shuffle(&mut rng, &mut krates);
7373
}
7474
for krate in krates {
75-
let module = krate.root_module(db).expect("crate without root module");
75+
let module = krate.root_module(db);
7676
let file_id = module.definition_source(db).file_id;
7777
let file_id = file_id.original_file(db);
7878
let source_root = db.file_source_root(file_id);

crates/rust-analyzer/src/cli/diagnostics.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pub fn diagnostics(
2828
let mut work = Vec::new();
2929
let krates = Crate::all(db);
3030
for krate in krates {
31-
let module = krate.root_module(db).expect("crate without root module");
31+
let module = krate.root_module(db);
3232
let file_id = module.definition_source(db).file_id;
3333
let file_id = file_id.original_file(db);
3434
let source_root = db.file_source_root(file_id);

0 commit comments

Comments
 (0)