error: call to unsafe function `unsf` is unsafe and requires unsafe block (error E0133)
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:9:5
   |
LL |     unsf();
   |     ^^^^^^ call to unsafe function
   |
   = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
   = note: consult the function's documentation for information on how to avoid undefined behavior
note: an unsafe function restricts its caller, but its body is safe by default
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:8:1
   |
LL | unsafe fn deny_level() {
   | ^^^^^^^^^^^^^^^^^^^^^^
note: the lint level is defined here
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:1:9
   |
LL | #![deny(unsafe_op_in_unsafe_fn)]
   |         ^^^^^^^^^^^^^^^^^^^^^^

error: dereference of raw pointer is unsafe and requires unsafe block (error E0133)
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:11:5
   |
LL |     *PTR;
   |     ^^^^ dereference of raw pointer
   |
   = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
   = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior

error: use of mutable static is unsafe and requires unsafe block (error E0133)
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:13:5
   |
LL |     VOID = ();
   |     ^^^^ use of mutable static
   |
   = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
   = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior

error: unnecessary `unsafe` block
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:16:5
   |
LL |     unsafe {}
   |     ^^^^^^ unnecessary `unsafe` block
   |
note: the lint level is defined here
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:2:9
   |
LL | #![deny(unused_unsafe)]
   |         ^^^^^^^^^^^^^

error: call to unsafe function `unsf` is unsafe and requires unsafe block (error E0133)
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:24:5
   |
LL |     unsf();
   |     ^^^^^^ call to unsafe function
   |
   = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
   = note: consult the function's documentation for information on how to avoid undefined behavior
note: an unsafe function restricts its caller, but its body is safe by default
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:23:1
   |
LL | unsafe fn warning_level() {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^
note: the lint level is defined here
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:22:8
   |
LL | #[deny(warnings)]
   |        ^^^^^^^^
   = note: `#[deny(unsafe_op_in_unsafe_fn)]` implied by `#[deny(warnings)]`

error: dereference of raw pointer is unsafe and requires unsafe block (error E0133)
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:26:5
   |
LL |     *PTR;
   |     ^^^^ dereference of raw pointer
   |
   = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
   = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior

error: use of mutable static is unsafe and requires unsafe block (error E0133)
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:28:5
   |
LL |     VOID = ();
   |     ^^^^ use of mutable static
   |
   = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
   = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior

error: unnecessary `unsafe` block
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:30:5
   |
LL |     unsafe {}
   |     ^^^^^^ unnecessary `unsafe` block

error: unnecessary `unsafe` block
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:44:5
   |
LL |     unsafe { unsafe { unsf() } }
   |     ^^^^^^ unnecessary `unsafe` block

error[E0133]: call to unsafe function `unsf` is unsafe and requires unsafe block
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:71:5
   |
LL |     unsf();
   |     ^^^^^^ call to unsafe function
   |
   = note: consult the function's documentation for information on how to avoid undefined behavior

error[E0133]: call to unsafe function `unsf` is unsafe and requires unsafe function or block
  --> $DIR/rfc-2585-unsafe_op_in_unsafe_fn.rs:75:9
   |
LL |         unsf();
   |         ^^^^^^ call to unsafe function
   |
   = note: consult the function's documentation for information on how to avoid undefined behavior

error: aborting due to 11 previous errors

For more information about this error, try `rustc --explain E0133`.
