@@ -227,12 +227,11 @@ pub fn intern_const_alloc_recursive<'tcx, M: CompileTimeMachine<'tcx, const_eval
227
227
228
228
// Keep interning as long as there are things to intern.
229
229
// We show errors if there are dangling pointers, or mutable pointers in immutable contexts
230
- // (i.e., everything except for `static mut`). When these errors affect references, it is
231
- // unfortunate that we show these errors here and not during validation, since validation can
232
- // show much nicer errors. However, we do need these checks to be run on all pointers, including
233
- // raw pointers, so we cannot rely on validation to catch them -- and since interning runs
234
- // before validation, and interning doesn't know the type of anything, this means we can't show
235
- // better errors. Maybe we should consider doing validation before interning in the future.
230
+ // (i.e., everything except for `static mut`). We only return these errors as a `Result`
231
+ // so that the caller can run validation, and subsequently only report interning errors
232
+ // if validation fails. Validation has the better error messages so we prefer those, but
233
+ // interning has better coverage since it "sees" *all* pointers, including raw pointers and
234
+ // references stored in unions.
236
235
while let Some ( prov) = todo. pop ( ) {
237
236
trace ! ( ?prov) ;
238
237
let alloc_id = prov. alloc_id ( ) ;
@@ -279,12 +278,12 @@ pub fn intern_const_alloc_recursive<'tcx, M: CompileTimeMachine<'tcx, const_eval
279
278
// when there is memory there that someone might expect to be mutable, but we make it immutable.
280
279
let dangling = !is_already_global && !ecx. memory . alloc_map . contains_key ( & alloc_id) ;
281
280
if !dangling {
282
- // Found a mutable reference inside a const where inner allocations should be
281
+ // Found a mutable pointer inside a const where inner allocations should be
283
282
// immutable.
284
283
if !ecx. tcx . sess . opts . unstable_opts . unleash_the_miri_inside_of_you {
285
284
span_bug ! (
286
285
ecx. tcx. span,
287
- "the static const safety checks accepted mutable references they should not have accepted"
286
+ "the static const safety checks accepted a mutable pointer they should not have accepted"
288
287
) ;
289
288
}
290
289
// Prefer dangling pointer errors over mutable pointer errors
0 commit comments