Allow wider expressions for when self is not taken as borrow

This commit is contained in:
Sofia 2025-07-29 23:55:31 +03:00
parent 3adb745576
commit 1e094eeea0

View File

@ -614,8 +614,18 @@ impl Expression {
first_param.1,
)
.resolve_ref(type_refs.types);
let backing_var = first_param.backing_var().expect("todo").1.clone();
let backing_var = first_param.backing_var();
let is_mutable = if let Some(backing_var) = first_param.backing_var() {
if let Some((mutable, _)) = type_refs.find_var(&backing_var.1) {
mutable
} else {
return Err(ErrorKind::VariableNotDefined(backing_var.1.clone()));
}
} else {
false
};
if backing_var.is_some() {
if let TypeKind::Borrow(inner, _) = type_kind {
if let TypeKind::Borrow(..) = *inner.clone() {
*type_kind = type_kind.unroll_borrow();
@ -625,13 +635,15 @@ impl Expression {
*first_param = *val.clone();
}
}
if let Some((mutable, _)) = type_refs.find_var(&backing_var) {
if !mutable {
first_param.remove_borrow_mutability();
}
} else {
return Err(ErrorKind::VariableNotDefined(backing_var));
let ExprKind::Borrow(val, _) = &first_param.0 else {
panic!()
};
*first_param = *val.clone();
}
if !is_mutable {
first_param.remove_borrow_mutability();
}
}
}