mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
address review comments
This commit is contained in:
@@ -24,8 +24,7 @@
|
||||
use rustc_middle::ty::data_structures::IndexSet;
|
||||
use rustc_middle::ty::{TyCtxt, TyCtxtFeed};
|
||||
use rustc_proc_macro::bridge::client::ProcMacro;
|
||||
use rustc_session::Session;
|
||||
use rustc_session::config::enforceable_mitigations::DeniedPartialMitigationLevel;
|
||||
use rustc_session::config::mitigation_coverage::DeniedPartialMitigationLevel;
|
||||
use rustc_session::config::{
|
||||
CrateType, ExtendedTargetModifierInfo, ExternLocation, Externs, OptionsTargetModifiers,
|
||||
TargetModifier,
|
||||
@@ -468,7 +467,7 @@ fn report_target_modifiers_extended(
|
||||
|
||||
pub fn report_session_incompatibilities(&self, tcx: TyCtxt<'_>, krate: &Crate) {
|
||||
self.report_incompatible_target_modifiers(tcx, krate);
|
||||
self.report_incompatible_denied_partial_mitigations(tcx, krate);
|
||||
self.report_incompatible_partial_mitigations(tcx, krate);
|
||||
self.report_incompatible_async_drop_feature(tcx, krate);
|
||||
}
|
||||
|
||||
@@ -493,7 +492,7 @@ pub fn report_incompatible_target_modifiers(&self, tcx: TyCtxt<'_>, krate: &Crat
|
||||
}
|
||||
}
|
||||
|
||||
pub fn report_incompatible_denied_partial_mitigations(&self, tcx: TyCtxt<'_>, krate: &Crate) {
|
||||
pub fn report_incompatible_partial_mitigations(&self, tcx: TyCtxt<'_>, krate: &Crate) {
|
||||
let my_mitigations = tcx.sess.gather_enabled_denied_partial_mitigations();
|
||||
let mut my_mitigations: BTreeMap<_, _> =
|
||||
my_mitigations.iter().map(|mitigation| (mitigation.kind, mitigation)).collect();
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
use rustc_serialize::opaque::MemDecoder;
|
||||
use rustc_serialize::{Decodable, Decoder};
|
||||
use rustc_session::config::TargetModifier;
|
||||
use rustc_session::config::enforceable_mitigations::DeniedPartialMitigation;
|
||||
use rustc_session::config::mitigation_coverage::DeniedPartialMitigation;
|
||||
use rustc_session::cstore::{CrateSource, ExternCrate};
|
||||
use rustc_span::hygiene::HygieneDecodeContext;
|
||||
use rustc_span::{
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
use rustc_middle::ty::fast_reject::{self, TreatParams};
|
||||
use rustc_middle::{bug, span_bug};
|
||||
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder, opaque};
|
||||
use rustc_session::config::enforceable_mitigations::DeniedPartialMitigation;
|
||||
use rustc_session::config::mitigation_coverage::DeniedPartialMitigation;
|
||||
use rustc_session::config::{CrateType, OptLevel, TargetModifier};
|
||||
use rustc_span::hygiene::HygieneEncodeContext;
|
||||
use rustc_span::{
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
use rustc_middle::ty::{self, Ty, TyCtxt};
|
||||
use rustc_middle::util::Providers;
|
||||
use rustc_serialize::opaque::FileEncoder;
|
||||
use rustc_session::config::enforceable_mitigations::DeniedPartialMitigation;
|
||||
use rustc_session::config::mitigation_coverage::DeniedPartialMitigation;
|
||||
use rustc_session::config::{SymbolManglingVersion, TargetModifier};
|
||||
use rustc_session::cstore::{CrateDepKind, ForeignModule, LinkagePreference, NativeLib};
|
||||
use rustc_span::edition::Edition;
|
||||
|
||||
@@ -120,7 +120,7 @@ impl ParameterizedOverTcx for $ty {
|
||||
rustc_middle::ty::adjustment::CoerceUnsizedInfo,
|
||||
rustc_middle::ty::fast_reject::SimplifiedType,
|
||||
rustc_session::config::TargetModifier,
|
||||
rustc_session::config::enforceable_mitigations::DeniedPartialMitigation,
|
||||
rustc_session::config::mitigation_coverage::DeniedPartialMitigation,
|
||||
rustc_session::cstore::ForeignModule,
|
||||
rustc_session::cstore::LinkagePreference,
|
||||
rustc_session::cstore::NativeLib,
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
TargetTuple, TlsModel,
|
||||
};
|
||||
|
||||
use crate::config::enforceable_mitigations::MitigationEnablement;
|
||||
use crate::config::mitigation_coverage::MitigationCoverage;
|
||||
use crate::config::*;
|
||||
use crate::search_paths::SearchPath;
|
||||
use crate::utils::NativeLib;
|
||||
@@ -85,7 +85,7 @@ pub struct TargetModifier {
|
||||
pub value_name: String,
|
||||
}
|
||||
|
||||
pub mod enforceable_mitigations;
|
||||
pub mod mitigation_coverage;
|
||||
|
||||
mod target_modifier_consistency_check {
|
||||
use super::*;
|
||||
@@ -896,16 +896,16 @@ mod desc {
|
||||
pub(crate) const parse_align: &str = "a number that is a power of 2 between 1 and 2^29";
|
||||
pub(crate) const parse_assert_incr_state: &str = "one of: `loaded`, `not-loaded`";
|
||||
pub(crate) const parse_allow_partial_mitigations: &str =
|
||||
super::enforceable_mitigations::DeniedPartialMitigationKind::KINDS;
|
||||
super::mitigation_coverage::DeniedPartialMitigationKind::KINDS;
|
||||
pub(crate) const parse_deny_partial_mitigations: &str =
|
||||
super::enforceable_mitigations::DeniedPartialMitigationKind::KINDS;
|
||||
super::mitigation_coverage::DeniedPartialMitigationKind::KINDS;
|
||||
}
|
||||
|
||||
pub mod parse {
|
||||
use std::str::FromStr;
|
||||
|
||||
pub(crate) use super::*;
|
||||
use crate::config::enforceable_mitigations::MitigationEnablement;
|
||||
use crate::config::mitigation_coverage::MitigationCoverage;
|
||||
pub(crate) const MAX_THREADS_CAP: usize = 256;
|
||||
|
||||
/// Ignore the value. Used for removed options where we don't actually want to store
|
||||
@@ -2086,7 +2086,7 @@ pub(crate) fn parse_assert_incr_state(
|
||||
}
|
||||
|
||||
fn parse_partial_mitigations(
|
||||
slot: &mut Vec<MitigationEnablement>,
|
||||
slot: &mut Vec<MitigationCoverage>,
|
||||
v: Option<&str>,
|
||||
enabled: bool,
|
||||
) -> bool {
|
||||
@@ -2094,7 +2094,7 @@ fn parse_partial_mitigations(
|
||||
Some(s) => {
|
||||
for sub in s.split(',') {
|
||||
match sub.parse() {
|
||||
Ok(kind) => slot.push(MitigationEnablement { kind, enabled }),
|
||||
Ok(kind) => slot.push(MitigationCoverage { kind, enabled }),
|
||||
Err(_) => return false,
|
||||
}
|
||||
}
|
||||
@@ -2105,14 +2105,14 @@ fn parse_partial_mitigations(
|
||||
}
|
||||
|
||||
pub(crate) fn parse_allow_partial_mitigations(
|
||||
slot: &mut Vec<MitigationEnablement>,
|
||||
slot: &mut Vec<MitigationCoverage>,
|
||||
v: Option<&str>,
|
||||
) -> bool {
|
||||
parse_partial_mitigations(slot, v, true)
|
||||
}
|
||||
|
||||
pub(crate) fn parse_deny_partial_mitigations(
|
||||
slot: &mut Vec<MitigationEnablement>,
|
||||
slot: &mut Vec<MitigationCoverage>,
|
||||
v: Option<&str>,
|
||||
) -> bool {
|
||||
parse_partial_mitigations(slot, v, false)
|
||||
@@ -2281,7 +2281,7 @@ pub(crate) fn parse_deny_partial_mitigations(
|
||||
// tidy-alphabetical-start
|
||||
allow_features: Option<Vec<String>> = (None, parse_opt_comma_list, [TRACKED],
|
||||
"only allow the listed language features to be enabled in code (comma separated)"),
|
||||
allow_partial_mitigations: Vec<MitigationEnablement> = (Vec::new(), parse_allow_partial_mitigations, [UNTRACKED],
|
||||
allow_partial_mitigations: Vec<MitigationCoverage> = (Vec::new(), parse_allow_partial_mitigations, [UNTRACKED],
|
||||
"Allow mitigations not enabled for all dependency crates (comma separated list)"),
|
||||
always_encode_mir: bool = (false, parse_bool, [TRACKED],
|
||||
"encode MIR of all functions into the crate metadata (default: no)"),
|
||||
@@ -2350,7 +2350,7 @@ pub(crate) fn parse_deny_partial_mitigations(
|
||||
"deduplicate identical diagnostics (default: yes)"),
|
||||
default_visibility: Option<SymbolVisibility> = (None, parse_opt_symbol_visibility, [TRACKED],
|
||||
"overrides the `default_visibility` setting of the target"),
|
||||
deny_partial_mitigations: Vec<MitigationEnablement> = (Vec::new(), parse_deny_partial_mitigations, [UNTRACKED],
|
||||
deny_partial_mitigations: Vec<MitigationCoverage> = (Vec::new(), parse_deny_partial_mitigations, [UNTRACKED],
|
||||
"Deny mitigations not enabled for all dependency crates (comma separated list)"),
|
||||
dep_info_omit_d_target: bool = (false, parse_bool, [TRACKED],
|
||||
"in dep-info output, omit targets for tracking dependencies of the dep-info files \
|
||||
|
||||
+6
-6
@@ -68,7 +68,7 @@ fn from(value: StackProtector) -> Self {
|
||||
pub struct DeniedPartialMitigationKindParseError;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Encodable, BlobDecodable)]
|
||||
pub struct MitigationEnablement {
|
||||
pub struct MitigationCoverage {
|
||||
pub kind: DeniedPartialMitigationKind,
|
||||
pub enabled: bool,
|
||||
}
|
||||
@@ -79,7 +79,7 @@ macro_rules! intersperse {
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! enforced_mitigations {
|
||||
macro_rules! denied_partial_mitigations {
|
||||
([$self:ident] enum $kind:ident {$(($name:ident, $text:expr, $since:ident, $code:expr)),*}) => {
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Encodable, BlobDecodable)]
|
||||
pub enum DeniedPartialMitigationKind {
|
||||
@@ -123,7 +123,7 @@ pub fn enforced_since(&self) -> Edition {
|
||||
}
|
||||
|
||||
impl Options {
|
||||
pub fn all_enforced_mitigations(&self) -> impl Iterator<Item = DeniedPartialMitigationKind> {
|
||||
pub fn all_denied_partial_mitigations(&self) -> impl Iterator<Item = DeniedPartialMitigationKind> {
|
||||
[$(DeniedPartialMitigationKind::$name),*].into_iter()
|
||||
}
|
||||
}
|
||||
@@ -145,7 +145,7 @@ pub fn gather_enabled_denied_partial_mitigations(&$self) -> Vec<DeniedPartialMit
|
||||
}
|
||||
}
|
||||
|
||||
enforced_mitigations! {
|
||||
denied_partial_mitigations! {
|
||||
[self]
|
||||
enum DeniedPartialMitigationKind {
|
||||
(StackProtector, "stack-protector", EditionFuture, self.stack_protector()),
|
||||
@@ -153,7 +153,7 @@ enum DeniedPartialMitigationKind {
|
||||
}
|
||||
}
|
||||
|
||||
/// Enforced mitigations, see [RFC 3855](https://github.com/rust-lang/rfcs/pull/3855)
|
||||
/// Denied-partial mitigations, see [RFC 3855](https://github.com/rust-lang/rfcs/pull/3855)
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Encodable, BlobDecodable)]
|
||||
pub struct DeniedPartialMitigation {
|
||||
pub kind: DeniedPartialMitigationKind,
|
||||
@@ -167,7 +167,7 @@ pub fn allowed_partial_mitigations(
|
||||
edition: Edition,
|
||||
) -> impl Iterator<Item = DeniedPartialMitigationKind> {
|
||||
let mut result: BTreeSet<_> = self
|
||||
.all_enforced_mitigations()
|
||||
.all_denied_partial_mitigations()
|
||||
.filter(|mitigation| mitigation.enforced_since() > edition)
|
||||
.collect();
|
||||
for mitigation in &self.unstable_opts.allow_partial_mitigations {
|
||||
Reference in New Issue
Block a user