mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 22:54:58 +00:00
Refactor: unwrap Option
once in the beginning of closure
This commit is contained in:
parent
43fb9563b2
commit
6afd0f57eb
1 changed files with 5 additions and 6 deletions
|
@ -487,9 +487,9 @@ impl SourceAnalyzer {
|
||||||
|
|
||||||
let mut prefer_value_ns = false;
|
let mut prefer_value_ns = false;
|
||||||
let resolved = (|| {
|
let resolved = (|| {
|
||||||
|
let infer = self.infer.as_deref()?;
|
||||||
if let Some(path_expr) = parent().and_then(ast::PathExpr::cast) {
|
if let Some(path_expr) = parent().and_then(ast::PathExpr::cast) {
|
||||||
let expr_id = self.expr_id(db, &path_expr.into())?;
|
let expr_id = self.expr_id(db, &path_expr.into())?;
|
||||||
let infer = self.infer.as_ref()?;
|
|
||||||
if let Some(assoc) = infer.assoc_resolutions_for_expr(expr_id) {
|
if let Some(assoc) = infer.assoc_resolutions_for_expr(expr_id) {
|
||||||
let assoc = match assoc {
|
let assoc = match assoc {
|
||||||
AssocItemId::FunctionId(f_in_trait) => {
|
AssocItemId::FunctionId(f_in_trait) => {
|
||||||
|
@ -520,18 +520,18 @@ impl SourceAnalyzer {
|
||||||
prefer_value_ns = true;
|
prefer_value_ns = true;
|
||||||
} else if let Some(path_pat) = parent().and_then(ast::PathPat::cast) {
|
} else if let Some(path_pat) = parent().and_then(ast::PathPat::cast) {
|
||||||
let pat_id = self.pat_id(&path_pat.into())?;
|
let pat_id = self.pat_id(&path_pat.into())?;
|
||||||
if let Some(assoc) = self.infer.as_ref()?.assoc_resolutions_for_pat(pat_id) {
|
if let Some(assoc) = infer.assoc_resolutions_for_pat(pat_id) {
|
||||||
return Some(PathResolution::Def(AssocItem::from(assoc).into()));
|
return Some(PathResolution::Def(AssocItem::from(assoc).into()));
|
||||||
}
|
}
|
||||||
if let Some(VariantId::EnumVariantId(variant)) =
|
if let Some(VariantId::EnumVariantId(variant)) =
|
||||||
self.infer.as_ref()?.variant_resolution_for_pat(pat_id)
|
infer.variant_resolution_for_pat(pat_id)
|
||||||
{
|
{
|
||||||
return Some(PathResolution::Def(ModuleDef::Variant(variant.into())));
|
return Some(PathResolution::Def(ModuleDef::Variant(variant.into())));
|
||||||
}
|
}
|
||||||
} else if let Some(rec_lit) = parent().and_then(ast::RecordExpr::cast) {
|
} else if let Some(rec_lit) = parent().and_then(ast::RecordExpr::cast) {
|
||||||
let expr_id = self.expr_id(db, &rec_lit.into())?;
|
let expr_id = self.expr_id(db, &rec_lit.into())?;
|
||||||
if let Some(VariantId::EnumVariantId(variant)) =
|
if let Some(VariantId::EnumVariantId(variant)) =
|
||||||
self.infer.as_ref()?.variant_resolution_for_expr(expr_id)
|
infer.variant_resolution_for_expr(expr_id)
|
||||||
{
|
{
|
||||||
return Some(PathResolution::Def(ModuleDef::Variant(variant.into())));
|
return Some(PathResolution::Def(ModuleDef::Variant(variant.into())));
|
||||||
}
|
}
|
||||||
|
@ -541,8 +541,7 @@ impl SourceAnalyzer {
|
||||||
|| parent().and_then(ast::TupleStructPat::cast).map(ast::Pat::from);
|
|| parent().and_then(ast::TupleStructPat::cast).map(ast::Pat::from);
|
||||||
if let Some(pat) = record_pat.or_else(tuple_struct_pat) {
|
if let Some(pat) = record_pat.or_else(tuple_struct_pat) {
|
||||||
let pat_id = self.pat_id(&pat)?;
|
let pat_id = self.pat_id(&pat)?;
|
||||||
let variant_res_for_pat =
|
let variant_res_for_pat = infer.variant_resolution_for_pat(pat_id);
|
||||||
self.infer.as_ref()?.variant_resolution_for_pat(pat_id);
|
|
||||||
if let Some(VariantId::EnumVariantId(variant)) = variant_res_for_pat {
|
if let Some(VariantId::EnumVariantId(variant)) = variant_res_for_pat {
|
||||||
return Some(PathResolution::Def(ModuleDef::Variant(variant.into())));
|
return Some(PathResolution::Def(ModuleDef::Variant(variant.into())));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue