//@ revisions: e2021 e2024
//@[e2021] edition: 2021
//@[e2024] edition: 2024
//@[e2024] compile-flags: -Zunstable-options

use std::env;

#[deny(unsafe_op_in_unsafe_fn)]
unsafe fn unsafe_fn() {
    env::set_var("FOO", "BAR");
    //[e2024]~^ ERROR call to unsafe function `std::env::set_var` is unsafe
    env::remove_var("FOO");
    //[e2024]~^ ERROR call to unsafe function `std::env::remove_var` is unsafe
    if false {
        unsafe_fn();
        //~^ ERROR call to unsafe function `unsafe_fn` is unsafe
    }
}
fn safe_fn() {}

#[deny(unused_unsafe)]
fn main() {
    env::set_var("FOO", "BAR");
    //[e2024]~^ ERROR call to unsafe function `set_var` is unsafe
    env::remove_var("FOO");
    //[e2024]~^ ERROR call to unsafe function `remove_var` is unsafe

    unsafe {
        env::set_var("FOO", "BAR");
        env::remove_var("FOO");
    }

    unsafe_fn();
    //~^ ERROR call to unsafe function `unsafe_fn` is unsafe

    unsafe {
        //~^ ERROR unnecessary `unsafe` block
        safe_fn();
    }
}
