Previously an `unsafe` block created by the compiler (like those in the
formatting macros) would be "ignored" if surrounded by `unsafe`, that
is, the internal unsafety would be being legitimised by the external
block:
unsafe { println!("...") } =(expansion)=> unsafe { ... unsafe { ... } }
And the code in the inner block would be using the outer block, making
it considered used (and the inner one considered unused).
This patch forces the compiler to create a new unsafe context for
compiler generated blocks, so that their internal unsafety doesn't
escape to external blocks.
Fixes #12418.
|
||
|---|---|---|
| .. | ||
| auxiliary | ||
| bench | ||
| codegen | ||
| compile-fail | ||
| debug-info | ||
| pretty | ||
| run-fail | ||
| run-make | ||
| run-pass | ||
| run-pass-fulldeps | ||