Commit 995b0a4
committed
Bubble up post-monomorphization errors instead of reading the global count
`collect_items_rec` snapshots the error count before processing a mono item
and compares it afterwards to decide whether to attach the "the above error
was encountered while instantiating ..." note. The mono item graph is walked
in parallel, so the global error count can be bumped by an error emitted while
collecting a different item on another thread between the two reads, which
makes an unrelated item (often lang_start) get blamed.
Instead of consulting the global count, bubble up an `ErrorGuaranteed` from the
places that actually emit post-monomorphization errors during collection:
const-eval failures in `eval_constant` and, through `check_mono_item`, the
feature-dependent ABI checks and a `large_assignments` lint that has been
escalated to `deny`/`forbid`. `items_of_instance` now returns whether such an
error was encountered, and `collect_items_rec` uses that to decide whether to
emit the note. This is unaffected by what other threads are doing.
`large_assignments` is normally a warning and so does not hand back an
`ErrorGuaranteed`. When it is escalated to an error we recover the proof token
from the `DiagCtxt` right after emitting, gated on the lint's effective level
at the relevant node so the note is only attributed to an instantiation whose
own lint became the error.1 parent 4a31759 commit 995b0a4
6 files changed
Lines changed: 118 additions & 59 deletions
File tree
- compiler
- rustc_middle/src
- query
- rustc_monomorphize/src
- mono_checks
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2680 | 2680 | | |
2681 | 2681 | | |
2682 | 2682 | | |
2683 | | - | |
| 2683 | + | |
2684 | 2684 | | |
2685 | 2685 | | |
2686 | 2686 | | |
2687 | | - | |
| 2687 | + | |
2688 | 2688 | | |
2689 | 2689 | | |
2690 | 2690 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
196 | | - | |
| 196 | + | |
197 | 197 | | |
198 | 198 | | |
199 | 199 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
235 | | - | |
| 235 | + | |
236 | 236 | | |
237 | 237 | | |
238 | 238 | | |
| |||
408 | 408 | | |
409 | 409 | | |
410 | 410 | | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
417 | 418 | | |
418 | 419 | | |
419 | 420 | | |
| |||
472 | 473 | | |
473 | 474 | | |
474 | 475 | | |
475 | | - | |
| 476 | + | |
| 477 | + | |
476 | 478 | | |
477 | 479 | | |
478 | 480 | | |
| |||
488 | 490 | | |
489 | 491 | | |
490 | 492 | | |
| 493 | + | |
491 | 494 | | |
492 | 495 | | |
493 | 496 | | |
| |||
538 | 541 | | |
539 | 542 | | |
540 | 543 | | |
541 | | - | |
| 544 | + | |
542 | 545 | | |
543 | 546 | | |
544 | 547 | | |
| |||
686 | 689 | | |
687 | 690 | | |
688 | 691 | | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
689 | 696 | | |
690 | 697 | | |
691 | 698 | | |
| |||
715 | 722 | | |
716 | 723 | | |
717 | 724 | | |
718 | | - | |
| 725 | + | |
719 | 726 | | |
| 727 | + | |
720 | 728 | | |
721 | 729 | | |
722 | 730 | | |
| |||
1303 | 1311 | | |
1304 | 1312 | | |
1305 | 1313 | | |
1306 | | - | |
| 1314 | + | |
1307 | 1315 | | |
1308 | 1316 | | |
1309 | 1317 | | |
1310 | 1318 | | |
1311 | 1319 | | |
1312 | 1320 | | |
1313 | | - | |
| 1321 | + | |
1314 | 1322 | | |
1315 | 1323 | | |
1316 | 1324 | | |
| |||
1331 | 1339 | | |
1332 | 1340 | | |
1333 | 1341 | | |
| 1342 | + | |
1334 | 1343 | | |
1335 | 1344 | | |
1336 | 1345 | | |
| |||
1361 | 1370 | | |
1362 | 1371 | | |
1363 | 1372 | | |
1364 | | - | |
| 1373 | + | |
| 1374 | + | |
1365 | 1375 | | |
1366 | 1376 | | |
1367 | 1377 | | |
1368 | 1378 | | |
1369 | 1379 | | |
1370 | 1380 | | |
1371 | | - | |
| 1381 | + | |
1372 | 1382 | | |
1373 | 1383 | | |
1374 | | - | |
| 1384 | + | |
| 1385 | + | |
1375 | 1386 | | |
1376 | 1387 | | |
1377 | 1388 | | |
1378 | 1389 | | |
1379 | | - | |
| 1390 | + | |
1380 | 1391 | | |
1381 | 1392 | | |
1382 | 1393 | | |
| |||
Lines changed: 57 additions & 34 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
| 61 | + | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
| |||
74 | 75 | | |
75 | 76 | | |
76 | 77 | | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
82 | 85 | | |
83 | 86 | | |
84 | 87 | | |
85 | 88 | | |
86 | 89 | | |
87 | | - | |
| 90 | + | |
88 | 91 | | |
89 | 92 | | |
90 | 93 | | |
91 | 94 | | |
92 | 95 | | |
93 | | - | |
| 96 | + | |
94 | 97 | | |
95 | 98 | | |
96 | 99 | | |
| |||
101 | 104 | | |
102 | 105 | | |
103 | 106 | | |
104 | | - | |
| 107 | + | |
105 | 108 | | |
106 | 109 | | |
107 | 110 | | |
108 | 111 | | |
109 | 112 | | |
110 | | - | |
| 113 | + | |
111 | 114 | | |
112 | 115 | | |
113 | 116 | | |
| |||
118 | 121 | | |
119 | 122 | | |
120 | 123 | | |
121 | | - | |
| 124 | + | |
122 | 125 | | |
123 | 126 | | |
124 | 127 | | |
125 | 128 | | |
126 | | - | |
| 129 | + | |
127 | 130 | | |
| 131 | + | |
128 | 132 | | |
129 | 133 | | |
130 | 134 | | |
| |||
136 | 140 | | |
137 | 141 | | |
138 | 142 | | |
139 | | - | |
| 143 | + | |
140 | 144 | | |
141 | 145 | | |
142 | | - | |
| 146 | + | |
143 | 147 | | |
144 | 148 | | |
| 149 | + | |
145 | 150 | | |
146 | 151 | | |
147 | 152 | | |
148 | | - | |
| 153 | + | |
149 | 154 | | |
150 | 155 | | |
151 | 156 | | |
152 | | - | |
| 157 | + | |
153 | 158 | | |
154 | 159 | | |
| 160 | + | |
155 | 161 | | |
156 | 162 | | |
157 | 163 | | |
158 | 164 | | |
159 | 165 | | |
160 | 166 | | |
161 | | - | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
162 | 171 | | |
163 | 172 | | |
164 | 173 | | |
165 | 174 | | |
166 | 175 | | |
167 | | - | |
| 176 | + | |
168 | 177 | | |
169 | 178 | | |
170 | 179 | | |
171 | 180 | | |
172 | 181 | | |
173 | 182 | | |
174 | | - | |
| 183 | + | |
175 | 184 | | |
176 | 185 | | |
177 | 186 | | |
| |||
186 | 195 | | |
187 | 196 | | |
188 | 197 | | |
189 | | - | |
190 | | - | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
191 | 203 | | |
192 | 204 | | |
193 | 205 | | |
| |||
199 | 211 | | |
200 | 212 | | |
201 | 213 | | |
202 | | - | |
| 214 | + | |
203 | 215 | | |
204 | 216 | | |
205 | 217 | | |
206 | 218 | | |
207 | 219 | | |
208 | 220 | | |
209 | | - | |
| 221 | + | |
210 | 222 | | |
211 | 223 | | |
212 | 224 | | |
| |||
216 | 228 | | |
217 | 229 | | |
218 | 230 | | |
219 | | - | |
| 231 | + | |
220 | 232 | | |
221 | 233 | | |
222 | 234 | | |
| |||
228 | 240 | | |
229 | 241 | | |
230 | 242 | | |
231 | | - | |
| 243 | + | |
232 | 244 | | |
233 | | - | |
234 | | - | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
235 | 250 | | |
236 | 251 | | |
237 | | - | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
238 | 258 | | |
239 | 259 | | |
240 | 260 | | |
| |||
247 | 267 | | |
248 | 268 | | |
249 | 269 | | |
250 | | - | |
| 270 | + | |
251 | 271 | | |
252 | 272 | | |
253 | 273 | | |
| |||
259 | 279 | | |
260 | 280 | | |
261 | 281 | | |
262 | | - | |
| 282 | + | |
263 | 283 | | |
264 | 284 | | |
265 | 285 | | |
266 | 286 | | |
| 287 | + | |
267 | 288 | | |
268 | 289 | | |
269 | 290 | | |
270 | 291 | | |
271 | 292 | | |
272 | 293 | | |
273 | | - | |
274 | | - | |
275 | | - | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
276 | 299 | | |
0 commit comments