diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2021-04-22 11:45:08 -0400 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2021-05-01 19:12:36 -0400 |
| commit | dd43d133252750154e323af3bc87d523bb1987ae (patch) | |
| tree | 6d4b766f4c3dccfe522e8fc20d4e3018c8bd1e18 | |
| parent | b52769b804a12b7045ee1bce893a64045cdb974a (diff) | |
| download | rust-dd43d133252750154e323af3bc87d523bb1987ae.tar.gz rust-dd43d133252750154e323af3bc87d523bb1987ae.zip | |
Reduce duplication in `impl_dep_tracking_hash` macros
| -rw-r--r-- | compiler/rustc_session/src/config.rs | 118 |
1 files changed, 61 insertions, 57 deletions
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 1f5cb5b8abc..a859da3721c 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -2332,17 +2332,17 @@ crate mod dep_tracking { } macro_rules! impl_dep_tracking_hash_via_hash { - ($t:ty) => { + ($($t:ty),+ $(,)?) => {$( impl DepTrackingHash for $t { fn hash(&self, hasher: &mut DefaultHasher, _: ErrorOutputType) { Hash::hash(self, hasher); } } - }; + )+}; } macro_rules! impl_dep_tracking_hash_for_sortable_vec_of { - ($t:ty) => { + ($($t:ty),+ $(,)?) => {$( impl DepTrackingHash for Vec<$t> { fn hash(&self, hasher: &mut DefaultHasher, error_format: ErrorOutputType) { let mut elems: Vec<&$t> = self.iter().collect(); @@ -2354,61 +2354,65 @@ crate mod dep_tracking { } } } - }; - } + )+}; + } + + impl_dep_tracking_hash_via_hash!( + bool, + usize, + u64, + String, + PathBuf, + lint::Level, + Option<bool>, + Option<u32>, + Option<usize>, + Option<NonZeroUsize>, + Option<String>, + Option<(String, u64)>, + Option<Vec<String>>, + Option<MergeFunctions>, + Option<RelocModel>, + Option<CodeModel>, + Option<TlsModel>, + Option<WasiExecModel>, + Option<PanicStrategy>, + Option<RelroLevel>, + Option<InstrumentCoverage>, + Option<lint::Level>, + Option<PathBuf>, + CrateType, + MergeFunctions, + PanicStrategy, + RelroLevel, + Passes, + OptLevel, + LtoCli, + DebugInfo, + UnstableFeatures, + OutputTypes, + NativeLibKind, + SanitizerSet, + CFGuard, + TargetTriple, + Edition, + LinkerPluginLto, + Option<SplitDebuginfo>, + SwitchWithOptPath, + Option<SymbolManglingVersion>, + Option<SourceFileHashAlgorithm>, + TrimmedDefPaths, + ); - impl_dep_tracking_hash_via_hash!(bool); - impl_dep_tracking_hash_via_hash!(usize); - impl_dep_tracking_hash_via_hash!(u64); - impl_dep_tracking_hash_via_hash!(String); - impl_dep_tracking_hash_via_hash!(PathBuf); - impl_dep_tracking_hash_via_hash!(lint::Level); - impl_dep_tracking_hash_via_hash!(Option<bool>); - impl_dep_tracking_hash_via_hash!(Option<u32>); - impl_dep_tracking_hash_via_hash!(Option<usize>); - impl_dep_tracking_hash_via_hash!(Option<NonZeroUsize>); - impl_dep_tracking_hash_via_hash!(Option<String>); - impl_dep_tracking_hash_via_hash!(Option<(String, u64)>); - impl_dep_tracking_hash_via_hash!(Option<Vec<String>>); - impl_dep_tracking_hash_via_hash!(Option<MergeFunctions>); - impl_dep_tracking_hash_via_hash!(Option<RelocModel>); - impl_dep_tracking_hash_via_hash!(Option<CodeModel>); - impl_dep_tracking_hash_via_hash!(Option<TlsModel>); - impl_dep_tracking_hash_via_hash!(Option<WasiExecModel>); - impl_dep_tracking_hash_via_hash!(Option<PanicStrategy>); - impl_dep_tracking_hash_via_hash!(Option<RelroLevel>); - impl_dep_tracking_hash_via_hash!(Option<InstrumentCoverage>); - impl_dep_tracking_hash_via_hash!(Option<lint::Level>); - impl_dep_tracking_hash_via_hash!(Option<PathBuf>); - impl_dep_tracking_hash_via_hash!(CrateType); - impl_dep_tracking_hash_via_hash!(MergeFunctions); - impl_dep_tracking_hash_via_hash!(PanicStrategy); - impl_dep_tracking_hash_via_hash!(RelroLevel); - impl_dep_tracking_hash_via_hash!(Passes); - impl_dep_tracking_hash_via_hash!(OptLevel); - impl_dep_tracking_hash_via_hash!(LtoCli); - impl_dep_tracking_hash_via_hash!(DebugInfo); - impl_dep_tracking_hash_via_hash!(UnstableFeatures); - impl_dep_tracking_hash_via_hash!(OutputTypes); - impl_dep_tracking_hash_via_hash!(NativeLibKind); - impl_dep_tracking_hash_via_hash!(SanitizerSet); - impl_dep_tracking_hash_via_hash!(CFGuard); - impl_dep_tracking_hash_via_hash!(TargetTriple); - impl_dep_tracking_hash_via_hash!(Edition); - impl_dep_tracking_hash_via_hash!(LinkerPluginLto); - impl_dep_tracking_hash_via_hash!(Option<SplitDebuginfo>); - impl_dep_tracking_hash_via_hash!(SwitchWithOptPath); - impl_dep_tracking_hash_via_hash!(Option<SymbolManglingVersion>); - impl_dep_tracking_hash_via_hash!(Option<SourceFileHashAlgorithm>); - impl_dep_tracking_hash_via_hash!(TrimmedDefPaths); - - impl_dep_tracking_hash_for_sortable_vec_of!(String); - impl_dep_tracking_hash_for_sortable_vec_of!(PathBuf); - impl_dep_tracking_hash_for_sortable_vec_of!((PathBuf, PathBuf)); - impl_dep_tracking_hash_for_sortable_vec_of!(CrateType); - impl_dep_tracking_hash_for_sortable_vec_of!((String, lint::Level)); - impl_dep_tracking_hash_for_sortable_vec_of!((String, Option<String>, NativeLibKind)); - impl_dep_tracking_hash_for_sortable_vec_of!((String, u64)); + impl_dep_tracking_hash_for_sortable_vec_of!( + String, + PathBuf, + (PathBuf, PathBuf), + CrateType, + (String, lint::Level), + (String, Option<String>, NativeLibKind), + (String, u64) + ); impl<T1, T2> DepTrackingHash for (T1, T2) where |
