pub fn is_ref(self, db: &dyn HirDatabase) -> bool {
let body = db.body(self.parent);
- matches!(&body[self.pat_id], Pat::Bind { mode: BindingAnnotation::Ref, .. })
+ matches!(&body[self.pat_id], Pat::Bind { mode: BindingAnnotation::Ref | BindingAnnotation::RefMut, .. })
}
pub fn parent(self, _db: &dyn HirDatabase) -> DefWithBody {
}
pub fn is_reference(&self) -> bool {
- matches!(self.ty.kind(&Interner), TyKind::Ref(hir_ty::Mutability::Not, ..))
+ matches!(self.ty.kind(&Interner), TyKind::Ref(..))
}
pub fn is_usize(&self) -> bool {
h |= HlMod::Associated;
match func.self_param(db) {
Some(sp) => match sp.access(db) {
- hir::Access::Exclusive => h |= HlMod::Mutable,
+ hir::Access::Exclusive => h = h | HlMod::Mutable | HlMod::Reference,
hir::Access::Shared => h |= HlMod::Reference,
_ => {}
},
if let Some(self_param) = func.self_param(sema.db) {
match self_param.access(sema.db) {
hir::Access::Shared => h |= HlMod::Reference,
- hir::Access::Exclusive => h |= HlMod::Mutable,
+ hir::Access::Exclusive => h | HlMod::Mutable | HlMod::Reference,
hir::Access::Owned => {
if let Some(receiver_ty) =
method_call.receiver().and_then(|it| sema.type_of_expr(&it))