Make std::env::{set_var, remove_var}
unsafe in edition 2024
Allow calling these functions without `unsafe` blocks in editions up until 2021, but don't trigger the `unused_unsafe` lint for `unsafe` blocks containing these functions. Fixes #27970. Fixes #90308. CC #124866.
This commit is contained in:
parent
e9b7aa08f7
commit
5d8f9b4dc1
18 changed files with 172 additions and 57 deletions
|
@ -110,14 +110,19 @@ impl<'tcx> UnsafetyVisitor<'_, 'tcx> {
|
|||
);
|
||||
self.suggest_unsafe_block = false;
|
||||
}
|
||||
SafetyContext::Safe => {
|
||||
kind.emit_requires_unsafe_err(
|
||||
SafetyContext::Safe => match kind {
|
||||
// Allow calls to deprecated-safe unsafe functions if the
|
||||
// caller is from an edition before 2024.
|
||||
UnsafeOpKind::CallToUnsafeFunction(Some(id))
|
||||
if !span.at_least_rust_2024()
|
||||
&& self.tcx.has_attr(id, sym::rustc_deprecated_safe_2024) => {}
|
||||
_ => kind.emit_requires_unsafe_err(
|
||||
self.tcx,
|
||||
span,
|
||||
self.hir_context,
|
||||
unsafe_op_in_unsafe_fn_allowed,
|
||||
);
|
||||
}
|
||||
),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue