@@ -60,122 +60,60 @@ LL | if let Some(&Some(x)) = &mut Some(&Some(0)) {
60
60
| ~
61
61
62
62
error[E0308]: mismatched types
63
- --> $DIR/well-typed-edition-2024.rs:96:10
63
+ --> $DIR/well-typed-edition-2024.rs:123:15
64
64
|
65
- LL | let [&mut x] = &mut [&0];
66
- | ^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
67
- | |
68
- | types differ in mutability
69
- |
70
- = note: expected reference `&{integer}`
71
- found mutable reference `&mut _`
72
- note: to declare a mutable binding use: `mut x`
73
- --> $DIR/well-typed-edition-2024.rs:96:10
74
- |
75
- LL | let [&mut x] = &mut [&0];
76
- | ^^^^^^
77
- help: consider removing `&mut` from the pattern
78
- |
79
- LL - let [&mut x] = &mut [&0];
80
- LL + let [x] = &mut [&0];
81
- |
82
-
83
- error[E0308]: mismatched types
84
- --> $DIR/well-typed-edition-2024.rs:102:10
85
- |
86
- LL | let [&mut ref x] = &mut [&0];
87
- | ^^^^^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
88
- | |
89
- | types differ in mutability
90
- |
91
- = note: expected reference `&{integer}`
92
- found mutable reference `&mut _`
93
- note: to declare a mutable binding use: `mut x`
94
- --> $DIR/well-typed-edition-2024.rs:102:10
95
- |
96
- LL | let [&mut ref x] = &mut [&0];
97
- | ^^^^^^^^^^
98
- help: consider removing `&mut` from the pattern
99
- |
100
- LL - let [&mut ref x] = &mut [&0];
101
- LL + let [ref x] = &mut [&0];
102
- |
103
-
104
- error[E0308]: mismatched types
105
- --> $DIR/well-typed-edition-2024.rs:117:10
106
- |
107
- LL | let [&mut mut x] = &mut [&0];
108
- | ^^^^^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
109
- | |
110
- | types differ in mutability
111
- |
112
- = note: expected reference `&{integer}`
113
- found mutable reference `&mut _`
114
- note: to declare a mutable binding use: `mut x`
115
- --> $DIR/well-typed-edition-2024.rs:117:10
65
+ LL | let [&mut &x] = &mut [&0];
66
+ | ^^ --------- this expression has type `&mut [&{integer}; 1]`
67
+ | |
68
+ | expected integer, found `&_`
116
69
|
117
- LL | let [&mut mut x] = &mut [&0];
118
- | ^^^^^^^^^^
119
- help: consider removing `&mut ` from the pattern
70
+ = note: expected type `{integer}`
71
+ found reference `&_`
72
+ help: consider removing `&` from the pattern
120
73
|
121
- LL - let [&mut mut x] = &mut [&0];
122
- LL + let [mut x] = &mut [&0];
74
+ LL - let [&mut & x] = &mut [&0];
75
+ LL + let [& mut x] = &mut [&0];
123
76
|
124
77
125
78
error[E0308]: mismatched types
126
- --> $DIR/well-typed-edition-2024.rs:123:10
79
+ --> $DIR/well-typed-edition-2024.rs:129:15
127
80
|
128
- LL | let [&mut &x] = &mut [&0];
129
- | ^ ^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
130
- | |
131
- | types differ in mutability
81
+ LL | let [&mut &ref x] = &mut [&0];
82
+ | ^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
83
+ | |
84
+ | expected integer, found `&_`
132
85
|
133
- = note: expected reference `&{integer}`
134
- found mutable reference `&mut _`
135
-
136
- error[E0308]: mismatched types
137
- --> $DIR/well-typed-edition-2024.rs:129:10
86
+ = note: expected type `{integer}`
87
+ found reference `&_`
88
+ help: consider removing `&` from the pattern
138
89
|
139
- LL | let [&mut &ref x] = &mut [&0];
140
- | ^^^^^^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
141
- | |
142
- | types differ in mutability
90
+ LL - let [&mut &ref x] = &mut [&0];
91
+ LL + let [&mut ref x] = &mut [&0];
143
92
|
144
- = note: expected reference `&{integer}`
145
- found mutable reference `&mut _`
146
93
147
94
error[E0308]: mismatched types
148
- --> $DIR/well-typed-edition-2024.rs:135:10
95
+ --> $DIR/well-typed-edition-2024.rs:135:15
149
96
|
150
97
LL | let [&mut &(mut x)] = &mut [&0];
151
- | ^^^^^ ^^^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
152
- | |
153
- | types differ in mutability
98
+ | ^^^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
99
+ | |
100
+ | expected integer, found `&_`
154
101
|
155
- = note: expected reference `&{integer}`
156
- found mutable reference `&mut _`
157
-
158
- error[E0308]: mismatched types
159
- --> $DIR/well-typed-edition-2024.rs:109:14
102
+ = note: expected type `{integer}`
103
+ found reference `&_`
104
+ help: consider removing `&` from the pattern
160
105
|
161
- LL | let [&mut ref mut x] = &mut [&0];
162
- | ^^^^^^^^^^^^^^ --------- this expression has type `&mut [&{integer}; 1]`
163
- | |
164
- | types differ in mutability
106
+ LL - let [&mut &(mut x)] = &mut [&0];
107
+ LL + let [&mut mut x)] = &mut [&0];
165
108
|
166
- = note: expected reference `&{integer}`
167
- found mutable reference `&mut _`
168
- note: to declare a mutable binding use: `mut x`
169
- --> $DIR/well-typed-edition-2024.rs:109:14
109
+
110
+ error[E0596]: cannot borrow data in a `&` reference as mutable
111
+ --> $DIR/well-typed-edition-2024.rs:109:19
170
112
|
171
113
LL | let [&mut ref mut x] = &mut [&0];
172
- | ^^^^^^^^^^^^^^
173
- help: consider removing `&mut` from the pattern
174
- |
175
- LL - let [&mut ref mut x] = &mut [&0];
176
- LL + let [ref mut x] = &mut [&0];
177
- |
114
+ | ^^^^^^^^^ cannot borrow as mutable
178
115
179
- error: aborting due to 11 previous errors
116
+ error: aborting due to 8 previous errors
180
117
181
- For more information about this error, try `rustc --explain E0308`.
118
+ Some errors have detailed explanations: E0308, E0596.
119
+ For more information about an error, try `rustc --explain E0308`.
0 commit comments