Don't reuse bindings for ref mut
Reusing bindings causes errors later in lowering: ``` error[E0596]: cannot borrow `vec` as mutable, as it is not declared as mutable --> /checkout/src/test/ui/async-await/argument-patterns.rs:12:20 | LL | async fn b(n: u32, ref mut vec: A) { | ^^^^^^^^^^^ | | | cannot borrow as mutable | help: consider changing this to be mutable: `mut vec` ```
This commit is contained in:
parent
380b222f52
commit
2baa0ceff4
2 changed files with 12 additions and 0 deletions
|
@ -1102,6 +1102,10 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
ident,
|
||||
_,
|
||||
) => (ident, true),
|
||||
// For `ref mut` arguments, we can't reuse the binding, but
|
||||
// we can keep the same name for the parameter.
|
||||
// This lets rustdoc render it correctly in documentation.
|
||||
hir::PatKind::Binding(_, _, ident, _) => (ident, false),
|
||||
_ => {
|
||||
// Replace the ident for bindings that aren't simple.
|
||||
let name = format!("__arg{}", index);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue