Allow wider expressions for when self is not taken as borrow
This commit is contained in:
parent
3adb745576
commit
1e094eeea0
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user