Fix pretty printing an AST representing &(mut ident)

`PatKind::Ref(PatKind::Ident(BindingMode::ByValue(Mutability::Mut), ..), ..)`
is an AST representing `&(mut ident)`. It was errorneously printed as
`&mut ident` which reparsed into a syntactically different AST.

This affected help diagnostics in the parser.
This commit is contained in:
Thomas Bahn 2020-12-19 23:13:50 +01:00
parent b1964e60b7
commit b05ab18aec
3 changed files with 28 additions and 1 deletions

View file

@ -0,0 +1,9 @@
// Regression test for correct pretty-printing of an AST representing `&(mut x)` in help
// suggestion diagnostic.
fn main() {
let mut &x = &0;
//~^ ERROR `mut` must be attached to each individual binding
//~| HELP add `mut` to each binding
//~| SUGGESTION &(mut x)
}

View file

@ -0,0 +1,10 @@
error: `mut` must be attached to each individual binding
--> $DIR/issue-80186-mut-binding-help-suggestion.rs:5:9
|
LL | let mut &x = &0;
| ^^^^^^ help: add `mut` to each binding: `&(mut x)`
|
= note: `mut` may be followed by `variable` and `variable @ pattern`
error: aborting due to previous error