Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/source_analyzer.rs')
-rw-r--r--crates/hir/src/source_analyzer.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs
index c16454cff6..4329a888b3 100644
--- a/crates/hir/src/source_analyzer.rs
+++ b/crates/hir/src/source_analyzer.rs
@@ -36,7 +36,7 @@ use hir_expand::{
use hir_ty::{
diagnostics::{
record_literal_missing_fields, record_pattern_missing_fields, unsafe_expressions,
- UnsafeExpr,
+ InsideUnsafeBlock,
},
lang_items::lang_items_for_bin_op,
method_resolution, Adjustment, InferenceResult, Interner, Substitution, Ty, TyExt, TyKind,
@@ -642,6 +642,14 @@ impl SourceAnalyzer {
}
}
+ pub(crate) fn resolve_use_type_arg(&self, name: &ast::NameRef) -> Option<crate::TypeParam> {
+ let name = name.as_name();
+ self.resolver
+ .all_generic_params()
+ .find_map(|(params, parent)| params.find_type_by_name(&name, *parent))
+ .map(crate::TypeParam::from)
+ }
+
pub(crate) fn resolve_path(
&self,
db: &dyn HirDatabase,
@@ -939,8 +947,8 @@ impl SourceAnalyzer {
*def,
body,
expr_id,
- &mut |UnsafeExpr { inside_unsafe_block, .. }| {
- is_unsafe |= !inside_unsafe_block
+ &mut |_, inside_unsafe_block, _| {
+ is_unsafe |= inside_unsafe_block == InsideUnsafeBlock::No
},
)
};