From 68b4efd53601fd67fbba4a2aa25ac94ecff58e5e Mon Sep 17 00:00:00 2001 From: Nick Spain Date: Fri, 1 Jan 2021 15:33:06 +1100 Subject: Handle not finding range in Definition::search_scope The `LifetimeParam` and `Local` variants use `source()` to find their range. Now that `source()` returns an `Option` we need to handle the `None` case. --- crates/ide_db/src/search.rs | 48 +++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) (limited to 'crates/ide_db') diff --git a/crates/ide_db/src/search.rs b/crates/ide_db/src/search.rs index e69f9d141..c4aff3932 100644 --- a/crates/ide_db/src/search.rs +++ b/crates/ide_db/src/search.rs @@ -122,9 +122,15 @@ impl Definition { if let Definition::Local(var) = self { #[allow(deprecated)] let range = match var.parent(db) { - DefWithBody::Function(f) => f.source_old(db).value.syntax().text_range(), - DefWithBody::Const(c) => c.source_old(db).value.syntax().text_range(), - DefWithBody::Static(s) => s.source_old(db).value.syntax().text_range(), + DefWithBody::Function(f) => { + f.source(db).and_then(|src| src.value.syntax().text_range()) + } + DefWithBody::Const(c) => { + c.source(db).and_then(|src| src.value.syntax().text_range()) + } + DefWithBody::Static(s) => { + s.source(db).and_then(|src| src.value.syntax().text_range()) + } }; let mut res = FxHashMap::default(); res.insert(file_id, Some(range)); @@ -134,17 +140,35 @@ impl Definition { if let Definition::LifetimeParam(param) = self { #[allow(deprecated)] let range = match param.parent(db) { - hir::GenericDef::Function(it) => it.source_old(db).value.syntax().text_range(), + hir::GenericDef::Function(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } hir::GenericDef::Adt(it) => match it { - hir::Adt::Struct(it) => it.source_old(db).value.syntax().text_range(), - hir::Adt::Union(it) => it.source_old(db).value.syntax().text_range(), - hir::Adt::Enum(it) => it.source_old(db).value.syntax().text_range(), + hir::Adt::Struct(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } + hir::Adt::Union(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } + hir::Adt::Enum(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } }, - hir::GenericDef::Trait(it) => it.source_old(db).value.syntax().text_range(), - hir::GenericDef::TypeAlias(it) => it.source_old(db).value.syntax().text_range(), - hir::GenericDef::Impl(it) => it.source_old(db).value.syntax().text_range(), - hir::GenericDef::Variant(it) => it.source_old(db).value.syntax().text_range(), - hir::GenericDef::Const(it) => it.source_old(db).value.syntax().text_range(), + hir::GenericDef::Trait(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } + hir::GenericDef::TypeAlias(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } + hir::GenericDef::Impl(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } + hir::GenericDef::Variant(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } + hir::GenericDef::Const(it) => { + it.source(db).and_then(|src| src.value.syntax().text_range()) + } }; let mut res = FxHashMap::default(); res.insert(file_id, Some(range)); -- cgit v1.2.3