Skip to content

Commit e97c29b

Browse files
committed
Auto merge of #86815 - FabianWolff:issue-84210, r=varkor
Improve error reporting for modifications behind `&` references I had a look at #84210 and noticed that #85823 has effectively already fixed #84210. However, the string matching in #85823 is _very_ crude and already breaks down when a variable name starts with `mut`. I have made this a bit more robust; further improvements could definitely be made but are complicated by the lack of information provided by an earlier pass: https://github.com/rust-lang/rust/blob/ce331ee6ee010438d1a58c7da8ced4f26d69a20e/compiler/rustc_mir_build/src/build/matches/mod.rs#L2103-L2107 I have also fixed a missing comma in the error message.
2 parents 54aaca8 + 5eb83f4 commit e97c29b

34 files changed

+90
-57
lines changed

Diff for: compiler/rustc_mir/src/borrow_check/diagnostics/mutability_errors.rs

+20-4
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
147147
if let Some(desc) = access_place_desc {
148148
item_msg = format!("`{}`", desc);
149149
reason = match error_access {
150-
AccessKind::Mutate => format!(" which is behind {}", pointer_type),
150+
AccessKind::Mutate => format!(", which is behind {}", pointer_type),
151151
AccessKind::MutableBorrow => {
152152
format!(", as it is behind {}", pointer_type)
153153
}
@@ -897,16 +897,32 @@ fn suggest_ampmut<'tcx>(
897897
) -> (Span, String) {
898898
if let Some(assignment_rhs_span) = opt_assignment_rhs_span {
899899
if let Ok(src) = tcx.sess.source_map().span_to_snippet(assignment_rhs_span) {
900+
let is_mutbl = |ty: &str| -> bool {
901+
if ty.starts_with("mut") {
902+
let rest = &ty[3..];
903+
match rest.chars().next() {
904+
// e.g. `&mut x`
905+
Some(c) if c.is_whitespace() => true,
906+
// e.g. `&mut(x)`
907+
Some('(') => true,
908+
// e.g. `&mutablevar`
909+
_ => false,
910+
}
911+
} else {
912+
false
913+
}
914+
};
900915
if let (true, Some(ws_pos)) =
901916
(src.starts_with("&'"), src.find(|c: char| -> bool { c.is_whitespace() }))
902917
{
903918
let lt_name = &src[1..ws_pos];
904-
let ty = &src[ws_pos..];
905-
if !ty.trim_start().starts_with("mut") {
919+
let ty = src[ws_pos..].trim_start();
920+
if !is_mutbl(ty) {
906921
return (assignment_rhs_span, format!("&{} mut {}", lt_name, ty));
907922
}
908923
} else if let Some(stripped) = src.strip_prefix('&') {
909-
if !stripped.trim_start().starts_with("mut") {
924+
let stripped = stripped.trim_start();
925+
if !is_mutbl(stripped) {
910926
return (assignment_rhs_span, format!("&mut {}", stripped));
911927
}
912928
}

Diff for: src/test/ui/borrowck/borrowck-assign-to-andmut-in-aliasable-loc.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
error[E0594]: cannot assign to `*s.pointer` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*s.pointer`, which is behind a `&` reference
22
--> $DIR/borrowck-assign-to-andmut-in-aliasable-loc.rs:9:5
33
|
44
LL | fn a(s: &S) {
55
| -- help: consider changing this to be a mutable reference: `&mut S<'_>`
66
LL | *s.pointer += 1;
77
| ^^^^^^^^^^^^^^^ `s` is a `&` reference, so the data it refers to cannot be written
88

9-
error[E0594]: cannot assign to `*s.pointer` which is behind a `&` reference
9+
error[E0594]: cannot assign to `*s.pointer`, which is behind a `&` reference
1010
--> $DIR/borrowck-assign-to-andmut-in-aliasable-loc.rs:17:5
1111
|
1212
LL | fn c(s: & &mut S) {

Diff for: src/test/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `**t1` which is behind a `&` reference
1+
error[E0594]: cannot assign to `**t1`, which is behind a `&` reference
22
--> $DIR/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs:9:5
33
|
44
LL | let t1 = t0;

Diff for: src/test/ui/borrowck/borrowck-issue-14498.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `***p` which is behind a `&` reference
1+
error[E0594]: cannot assign to `***p`, which is behind a `&` reference
22
--> $DIR/borrowck-issue-14498.rs:16:5
33
|
44
LL | let p = &y;

Diff for: src/test/ui/borrowck/issue-69789-iterator-mut-suggestion.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `*item` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*item`, which is behind a `&` reference
22
--> $DIR/issue-69789-iterator-mut-suggestion.rs:7:9
33
|
44
LL | for item in &mut std::iter::empty::<&'static ()>() {

Diff for: src/test/ui/borrowck/issue-83309-ice-immut-in-for-loop.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ fn main() {
99
for v in Query.iter_mut() {
1010
//~^ NOTE this iterator yields `&` references
1111
*v -= 1;
12-
//~^ ERROR cannot assign to `*v` which is behind a `&` reference
12+
//~^ ERROR cannot assign to `*v`, which is behind a `&` reference
1313
//~| NOTE `v` is a `&` reference, so the data it refers to cannot be written
1414
}
1515
}

Diff for: src/test/ui/borrowck/issue-83309-ice-immut-in-for-loop.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `*v` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*v`, which is behind a `&` reference
22
--> $DIR/issue-83309-ice-immut-in-for-loop.rs:11:9
33
|
44
LL | for v in Query.iter_mut() {

Diff for: src/test/ui/borrowck/issue-85765.rs

+7
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,11 @@ fn main() {
55
rofl.push(Vec::new());
66
//~^ ERROR cannot borrow `*rofl` as mutable, as it is behind a `&` reference
77
//~| NOTE `rofl` is a `&` reference, so the data it refers to cannot be borrowed as mutable
8+
9+
let mut mutvar = 42;
10+
let r = &mutvar;
11+
//~^ HELP consider changing this to be a mutable reference
12+
*r = 0;
13+
//~^ ERROR cannot assign to `*r`, which is behind a `&` reference
14+
//~| NOTE `r` is a `&` reference, so the data it refers to cannot be written
815
}

Diff for: src/test/ui/borrowck/issue-85765.stderr

+12-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ LL |
77
LL | rofl.push(Vec::new());
88
| ^^^^ `rofl` is a `&` reference, so the data it refers to cannot be borrowed as mutable
99

10-
error: aborting due to previous error
10+
error[E0594]: cannot assign to `*r`, which is behind a `&` reference
11+
--> $DIR/issue-85765.rs:12:5
12+
|
13+
LL | let r = &mutvar;
14+
| ------- help: consider changing this to be a mutable reference: `&mut mutvar`
15+
LL |
16+
LL | *r = 0;
17+
| ^^^^^^ `r` is a `&` reference, so the data it refers to cannot be written
18+
19+
error: aborting due to 2 previous errors
1120

12-
For more information about this error, try `rustc --explain E0596`.
21+
Some errors have detailed explanations: E0594, E0596.
22+
For more information about an error, try `rustc --explain E0594`.

Diff for: src/test/ui/borrowck/mutability-errors.stderr

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
error[E0594]: cannot assign to `*x` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*x`, which is behind a `&` reference
22
--> $DIR/mutability-errors.rs:9:5
33
|
44
LL | fn named_ref(x: &(i32,)) {
55
| ------- help: consider changing this to be a mutable reference: `&mut (i32,)`
66
LL | *x = (1,);
77
| ^^^^^^^^^ `x` is a `&` reference, so the data it refers to cannot be written
88

9-
error[E0594]: cannot assign to `x.0` which is behind a `&` reference
9+
error[E0594]: cannot assign to `x.0`, which is behind a `&` reference
1010
--> $DIR/mutability-errors.rs:10:5
1111
|
1212
LL | fn named_ref(x: &(i32,)) {
@@ -57,15 +57,15 @@ error[E0596]: cannot borrow data in a `&` reference as mutable
5757
LL | &mut f().0;
5858
| ^^^^^^^^^^ cannot borrow as mutable
5959

60-
error[E0594]: cannot assign to `*x` which is behind a `*const` pointer
60+
error[E0594]: cannot assign to `*x`, which is behind a `*const` pointer
6161
--> $DIR/mutability-errors.rs:23:5
6262
|
6363
LL | unsafe fn named_ptr(x: *const (i32,)) {
6464
| ------------- help: consider changing this to be a mutable pointer: `*mut (i32,)`
6565
LL | *x = (1,);
6666
| ^^^^^^^^^ `x` is a `*const` pointer, so the data it refers to cannot be written
6767

68-
error[E0594]: cannot assign to `x.0` which is behind a `*const` pointer
68+
error[E0594]: cannot assign to `x.0`, which is behind a `*const` pointer
6969
--> $DIR/mutability-errors.rs:24:5
7070
|
7171
LL | unsafe fn named_ptr(x: *const (i32,)) {

Diff for: src/test/ui/did_you_mean/issue-39544.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ pub fn with_tuple() {
4646
let mut y = 0;
4747
let x = (&y,);
4848
*x.0 = 1;
49-
//~^ ERROR cannot assign to `*x.0` which is behind a `&` reference
49+
//~^ ERROR cannot assign to `*x.0`, which is behind a `&` reference
5050
}

Diff for: src/test/ui/did_you_mean/issue-39544.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ LL | let _ = &mut z.x;
9090
LL | let _ = &mut w.x;
9191
| ^^^^^^^^ `w` is a `&` reference, so the data it refers to cannot be borrowed as mutable
9292

93-
error[E0594]: cannot assign to `*x.0` which is behind a `&` reference
93+
error[E0594]: cannot assign to `*x.0`, which is behind a `&` reference
9494
--> $DIR/issue-39544.rs:48:5
9595
|
9696
LL | *x.0 = 1;

Diff for: src/test/ui/error-codes/E0389.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ struct FancyNum {
55
fn main() {
66
let mut fancy = FancyNum{ num: 5 };
77
let fancy_ref = &(&mut fancy);
8-
fancy_ref.num = 6; //~ ERROR cannot assign to `fancy_ref.num` which is behind a `&` reference
8+
fancy_ref.num = 6; //~ ERROR cannot assign to `fancy_ref.num`, which is behind a `&` reference
99
println!("{}", fancy_ref.num);
1010
}

Diff for: src/test/ui/error-codes/E0389.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `fancy_ref.num` which is behind a `&` reference
1+
error[E0594]: cannot assign to `fancy_ref.num`, which is behind a `&` reference
22
--> $DIR/E0389.rs:8:5
33
|
44
LL | let fancy_ref = &(&mut fancy);

Diff for: src/test/ui/issues/issue-51244.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
fn main() {
22
let ref my_ref @ _ = 0;
3-
*my_ref = 0; //~ ERROR cannot assign to `*my_ref` which is behind a `&` reference [E0594]
3+
*my_ref = 0; //~ ERROR cannot assign to `*my_ref`, which is behind a `&` reference [E0594]
44
}

Diff for: src/test/ui/issues/issue-51244.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `*my_ref` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*my_ref`, which is behind a `&` reference
22
--> $DIR/issue-51244.rs:3:5
33
|
44
LL | let ref my_ref @ _ = 0;

Diff for: src/test/ui/issues/issue-51515.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ fn main() {
33
//~^ HELP consider changing this to be a mutable reference
44
//~| SUGGESTION &mut 16
55
*foo = 32;
6-
//~^ ERROR cannot assign to `*foo` which is behind a `&` reference
6+
//~^ ERROR cannot assign to `*foo`, which is behind a `&` reference
77
let bar = foo;
88
//~^ HELP consider changing this to be a mutable reference
99
//~| SUGGESTION &mut i32
1010
*bar = 64;
11-
//~^ ERROR cannot assign to `*bar` which is behind a `&` reference
11+
//~^ ERROR cannot assign to `*bar`, which is behind a `&` reference
1212
}

Diff for: src/test/ui/issues/issue-51515.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `*foo` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*foo`, which is behind a `&` reference
22
--> $DIR/issue-51515.rs:5:5
33
|
44
LL | let foo = &16;
@@ -7,7 +7,7 @@ LL | let foo = &16;
77
LL | *foo = 32;
88
| ^^^^^^^^^ `foo` is a `&` reference, so the data it refers to cannot be written
99

10-
error[E0594]: cannot assign to `*bar` which is behind a `&` reference
10+
error[E0594]: cannot assign to `*bar`, which is behind a `&` reference
1111
--> $DIR/issue-51515.rs:10:5
1212
|
1313
LL | let bar = foo;

Diff for: src/test/ui/mut/mutable-class-fields-2.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `self.how_hungry` which is behind a `&` reference
1+
error[E0594]: cannot assign to `self.how_hungry`, which is behind a `&` reference
22
--> $DIR/mutable-class-fields-2.rs:9:5
33
|
44
LL | pub fn eat(&self) {

Diff for: src/test/ui/nll/issue-47388.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `fancy_ref.num` which is behind a `&` reference
1+
error[E0594]: cannot assign to `fancy_ref.num`, which is behind a `&` reference
22
--> $DIR/issue-47388.rs:8:5
33
|
44
LL | let fancy_ref = &(&mut fancy);

Diff for: src/test/ui/nll/issue-51244.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
fn main() {
22
let ref my_ref @ _ = 0;
33
*my_ref = 0;
4-
//~^ ERROR cannot assign to `*my_ref` which is behind a `&` reference [E0594]
4+
//~^ ERROR cannot assign to `*my_ref`, which is behind a `&` reference [E0594]
55
}

Diff for: src/test/ui/nll/issue-51244.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `*my_ref` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*my_ref`, which is behind a `&` reference
22
--> $DIR/issue-51244.rs:3:5
33
|
44
LL | let ref my_ref @ _ = 0;

Diff for: src/test/ui/nll/issue-57989.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
fn f(x: &i32) {
44
let g = &x;
5-
*x = 0; //~ ERROR cannot assign to `*x` which is behind a `&` reference
5+
*x = 0; //~ ERROR cannot assign to `*x`, which is behind a `&` reference
66
//~| ERROR cannot assign to `*x` because it is borrowed
77
g;
88
}

Diff for: src/test/ui/nll/issue-57989.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `*x` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*x`, which is behind a `&` reference
22
--> $DIR/issue-57989.rs:5:5
33
|
44
LL | fn f(x: &i32) {

Diff for: src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ fn tuple() {
2323
_x1 = U; //~ ERROR cannot assign twice to immutable variable
2424
let _x0_hold = &mut tup.0; //~ ERROR cannot borrow `tup.0` as mutable because it is also
2525
let (ref mut _x0_hold, ..) = tup; //~ ERROR cannot borrow `tup.0` as mutable because it is also
26-
*_x0 = U; //~ ERROR cannot assign to `*_x0` which is behind a `&` reference
27-
*_x2 = U; //~ ERROR cannot assign to `*_x2` which is behind a `&` reference
26+
*_x0 = U; //~ ERROR cannot assign to `*_x0`, which is behind a `&` reference
27+
*_x2 = U; //~ ERROR cannot assign to `*_x2`, which is behind a `&` reference
2828
drop(tup.1); //~ ERROR use of moved value: `tup.1`
2929
let _x1_hold = &tup.1; //~ ERROR borrow of moved value: `tup.1`
3030
let (.., ref mut _x3) = tup;

Diff for: src/test/ui/pattern/move-ref-patterns/borrowck-move-ref-pattern.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ LL | let (ref mut _x0_hold, ..) = tup;
101101
LL | *_x0 = U;
102102
| -------- immutable borrow later used here
103103

104-
error[E0594]: cannot assign to `*_x0` which is behind a `&` reference
104+
error[E0594]: cannot assign to `*_x0`, which is behind a `&` reference
105105
--> $DIR/borrowck-move-ref-pattern.rs:26:5
106106
|
107107
LL | let (ref _x0, _x1, ref _x2, ..) = tup;
@@ -110,7 +110,7 @@ LL | let (ref _x0, _x1, ref _x2, ..) = tup;
110110
LL | *_x0 = U;
111111
| ^^^^^^^^ `_x0` is a `&` reference, so the data it refers to cannot be written
112112

113-
error[E0594]: cannot assign to `*_x2` which is behind a `&` reference
113+
error[E0594]: cannot assign to `*_x2`, which is behind a `&` reference
114114
--> $DIR/borrowck-move-ref-pattern.rs:27:5
115115
|
116116
LL | let (ref _x0, _x1, ref _x2, ..) = tup;

Diff for: src/test/ui/rfc-2005-default-binding-mode/enum.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ use Wrapper::Wrap;
66

77
pub fn main() {
88
let Wrap(x) = &Wrap(3);
9-
*x += 1; //~ ERROR cannot assign to `*x` which is behind a `&` reference
9+
*x += 1; //~ ERROR cannot assign to `*x`, which is behind a `&` reference
1010

1111

1212
if let Some(x) = &Some(3) {
13-
*x += 1; //~ ERROR cannot assign to `*x` which is behind a `&` reference
13+
*x += 1; //~ ERROR cannot assign to `*x`, which is behind a `&` reference
1414
} else {
1515
panic!();
1616
}
1717

1818
while let Some(x) = &Some(3) {
19-
*x += 1; //~ ERROR cannot assign to `*x` which is behind a `&` reference
19+
*x += 1; //~ ERROR cannot assign to `*x`, which is behind a `&` reference
2020
break;
2121
}
2222
}

Diff for: src/test/ui/rfc-2005-default-binding-mode/enum.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
error[E0594]: cannot assign to `*x` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*x`, which is behind a `&` reference
22
--> $DIR/enum.rs:9:5
33
|
44
LL | *x += 1;
55
| ^^^^^^^ `x` is a `&` reference, so the data it refers to cannot be written
66

7-
error[E0594]: cannot assign to `*x` which is behind a `&` reference
7+
error[E0594]: cannot assign to `*x`, which is behind a `&` reference
88
--> $DIR/enum.rs:13:9
99
|
1010
LL | *x += 1;
1111
| ^^^^^^^ `x` is a `&` reference, so the data it refers to cannot be written
1212

13-
error[E0594]: cannot assign to `*x` which is behind a `&` reference
13+
error[E0594]: cannot assign to `*x`, which is behind a `&` reference
1414
--> $DIR/enum.rs:19:9
1515
|
1616
LL | *x += 1;

Diff for: src/test/ui/rfc-2005-default-binding-mode/explicit-mut.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
fn main() {
55
match &&Some(5i32) {
66
Some(n) => {
7-
*n += 1; //~ ERROR cannot assign to `*n` which is behind a `&` reference
7+
*n += 1; //~ ERROR cannot assign to `*n`, which is behind a `&` reference
88
let _ = n;
99
}
1010
None => {},
1111
};
1212

1313
match &mut &Some(5i32) {
1414
Some(n) => {
15-
*n += 1; //~ ERROR cannot assign to `*n` which is behind a `&` reference
15+
*n += 1; //~ ERROR cannot assign to `*n`, which is behind a `&` reference
1616
let _ = n;
1717
}
1818
None => {},
1919
};
2020

2121
match &&mut Some(5i32) {
2222
Some(n) => {
23-
*n += 1; //~ ERROR cannot assign to `*n` which is behind a `&` reference
23+
*n += 1; //~ ERROR cannot assign to `*n`, which is behind a `&` reference
2424
let _ = n;
2525
}
2626
None => {},

Diff for: src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
error[E0594]: cannot assign to `*n` which is behind a `&` reference
1+
error[E0594]: cannot assign to `*n`, which is behind a `&` reference
22
--> $DIR/explicit-mut.rs:7:13
33
|
44
LL | *n += 1;
55
| ^^^^^^^ `n` is a `&` reference, so the data it refers to cannot be written
66

7-
error[E0594]: cannot assign to `*n` which is behind a `&` reference
7+
error[E0594]: cannot assign to `*n`, which is behind a `&` reference
88
--> $DIR/explicit-mut.rs:15:13
99
|
1010
LL | *n += 1;
1111
| ^^^^^^^ `n` is a `&` reference, so the data it refers to cannot be written
1212

13-
error[E0594]: cannot assign to `*n` which is behind a `&` reference
13+
error[E0594]: cannot assign to `*n`, which is behind a `&` reference
1414
--> $DIR/explicit-mut.rs:23:13
1515
|
1616
LL | *n += 1;

Diff for: src/test/ui/suggestions/issue-68049-1.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
error[E0594]: cannot assign to `self.0` which is behind a `&` reference
1+
error[E0594]: cannot assign to `self.0`, which is behind a `&` reference
22
--> $DIR/issue-68049-1.rs:7:9
33
|
44
LL | self.0 += 1;

0 commit comments

Comments
 (0)