diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-10-30 14:05:06 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-10-30 14:12:53 +1100 |
| commit | 5c6a12c1affd7759eb793f3bcd2a97577fab7ab4 (patch) | |
| tree | bcc3883e260e20f9e663def0cddf3e602c0a355d /compiler/rustc_session | |
| parent | 8e4ac980fd775d311bc63642c8d6b5739aa6f34c (diff) | |
| download | rust-5c6a12c1affd7759eb793f3bcd2a97577fab7ab4.tar.gz rust-5c6a12c1affd7759eb793f3bcd2a97577fab7ab4.zip | |
Make `Cfg` and `CheckCfg` non-generic.
They now only ever contains symbols.
Diffstat (limited to 'compiler/rustc_session')
| -rw-r--r-- | compiler/rustc_session/src/config.rs | 31 | ||||
| -rw-r--r-- | compiler/rustc_session/src/parse.rs | 4 |
2 files changed, 12 insertions, 23 deletions
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 4a0bdd511a3..a8ebab4ae33 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -1247,8 +1247,8 @@ pub const fn default_lib_output() -> CrateType { CrateType::Rlib } -fn default_configuration(sess: &Session) -> Cfg<Symbol> { - // NOTE: This should be kept in sync with `CheckCfg::<Symbol>::fill_well_known` below. +fn default_configuration(sess: &Session) -> Cfg { + // NOTE: This should be kept in sync with `CheckCfg::fill_well_known` below. let end = &sess.target.endian; let arch = &sess.target.arch; let wordsz = sess.target.pointer_width.to_string(); @@ -1358,32 +1358,21 @@ fn default_configuration(sess: &Session) -> Cfg<Symbol> { } /// The parsed `--cfg` options that define the compilation environment of the -/// crate, used to drive conditional compilation. `T` is always `String` or -/// `Symbol`. Strings are used temporarily very early on. Once the the main -/// symbol interner is running, they are converted to symbols. +/// crate, used to drive conditional compilation. /// /// An `FxIndexSet` is used to ensure deterministic ordering of error messages /// relating to `--cfg`. -pub type Cfg<T> = FxIndexSet<(T, Option<T>)>; +pub type Cfg = FxIndexSet<(Symbol, Option<Symbol>)>; -/// The parsed `--check-cfg` options. The `<T>` structure is similar to `Cfg`. -pub struct CheckCfg<T> { +/// The parsed `--check-cfg` options. +#[derive(Default)] +pub struct CheckCfg { /// Is well known names activated pub exhaustive_names: bool, /// Is well known values activated pub exhaustive_values: bool, /// All the expected values for a config name - pub expecteds: FxHashMap<T, ExpectedValues<T>>, -} - -impl<T> Default for CheckCfg<T> { - fn default() -> Self { - CheckCfg { - exhaustive_names: false, - exhaustive_values: false, - expecteds: FxHashMap::default(), - } - } + pub expecteds: FxHashMap<Symbol, ExpectedValues<Symbol>>, } pub enum ExpectedValues<T> { @@ -1418,7 +1407,7 @@ impl<'a, T: Eq + Hash + Copy + 'a> Extend<&'a T> for ExpectedValues<T> { } } -impl CheckCfg<Symbol> { +impl CheckCfg { pub fn fill_well_known(&mut self, current_target: &Target) { if !self.exhaustive_values && !self.exhaustive_names { return; @@ -1558,7 +1547,7 @@ impl CheckCfg<Symbol> { } } -pub fn build_configuration(sess: &Session, mut user_cfg: Cfg<Symbol>) -> Cfg<Symbol> { +pub fn build_configuration(sess: &Session, mut user_cfg: Cfg) -> Cfg { // Combine the configuration requested by the session (command line) with // some default and generated configuration items. let default_cfg = default_configuration(sess); diff --git a/compiler/rustc_session/src/parse.rs b/compiler/rustc_session/src/parse.rs index 5b98ee5d992..4d20d6d4187 100644 --- a/compiler/rustc_session/src/parse.rs +++ b/compiler/rustc_session/src/parse.rs @@ -188,8 +188,8 @@ pub fn add_feature_diagnostics_for_issue( pub struct ParseSess { pub span_diagnostic: Handler, pub unstable_features: UnstableFeatures, - pub config: Cfg<Symbol>, - pub check_config: CheckCfg<Symbol>, + pub config: Cfg, + pub check_config: CheckCfg, pub edition: Edition, /// Places where raw identifiers were used. This is used to avoid complaining about idents /// clashing with keywords in new editions. |
