) -> Option<(Either<ast::UseTree, ast::UseTreeList>, ast::Path)> {
return star.ancestors().find_map(|n| {
find_use_tree_list(n.clone())
- .and_then(|(u, p)| Some((Either::Right(u), p)))
- .or_else(|| find_use_tree(n).and_then(|(u, p)| Some((Either::Left(u), p))))
+ .map(|(u, p)| (Either::Right(u), p))
+ .or_else(|| find_use_tree(n).map(|(u, p)| (Either::Left(u), p)))
});
fn find_use_tree_list(n: SyntaxNode) -> Option<(ast::UseTreeList, ast::Path)> {
if let Definition::Local(var) = self {
let range = match var.parent(db) {
- DefWithBody::Function(f) => {
- f.source(db).and_then(|src| Some(src.value.syntax().text_range()))
- }
- DefWithBody::Const(c) => {
- c.source(db).and_then(|src| Some(src.value.syntax().text_range()))
- }
- DefWithBody::Static(s) => {
- s.source(db).and_then(|src| Some(src.value.syntax().text_range()))
- }
+ DefWithBody::Function(f) => f.source(db).map(|src| src.value.syntax().text_range()),
+ DefWithBody::Const(c) => c.source(db).map(|src| src.value.syntax().text_range()),
+ DefWithBody::Static(s) => s.source(db).map(|src| src.value.syntax().text_range()),
};
let mut res = FxHashMap::default();
res.insert(file_id, range);
if let Definition::GenericParam(hir::GenericParam::LifetimeParam(param)) = self {
let range = match param.parent(db) {
hir::GenericDef::Function(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
hir::GenericDef::Adt(it) => match it {
hir::Adt::Struct(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
- }
- hir::Adt::Union(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
- }
- hir::Adt::Enum(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
+ hir::Adt::Union(it) => it.source(db).map(|src| src.value.syntax().text_range()),
+ hir::Adt::Enum(it) => it.source(db).map(|src| src.value.syntax().text_range()),
},
hir::GenericDef::Trait(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
hir::GenericDef::TypeAlias(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
hir::GenericDef::Impl(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
hir::GenericDef::Variant(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
hir::GenericDef::Const(it) => {
- it.source(db).and_then(|src| Some(src.value.syntax().text_range()))
+ it.source(db).map(|src| src.value.syntax().text_range())
}
};
let mut res = FxHashMap::default();