diff options
| author | Oli Scherer <github35764891676564198441@oli-obk.de> | 2021-03-04 15:44:20 +0000 |
|---|---|---|
| committer | Oli Scherer <github35764891676564198441@oli-obk.de> | 2021-03-04 15:45:31 +0000 |
| commit | 29f4aa753fdf8a48523fbb51ddd2d21546b281a9 (patch) | |
| tree | b98496d2dbbae43b11ccf6b137e0bdedef4b7ffb /compiler | |
| parent | 67a61b9a013531bd0b03c8ddf1fd8922d4b7d252 (diff) | |
| download | rust-29f4aa753fdf8a48523fbb51ddd2d21546b281a9.tar.gz rust-29f4aa753fdf8a48523fbb51ddd2d21546b281a9.zip | |
Fixes -Zpolymorphize for src/test/ui/const-generics/auxiliary/crayte.rs
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_mir/src/monomorphize/polymorphize.rs | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/compiler/rustc_mir/src/monomorphize/polymorphize.rs b/compiler/rustc_mir/src/monomorphize/polymorphize.rs index 5b7c0ac5556..05b0e3a7dab 100644 --- a/compiler/rustc_mir/src/monomorphize/polymorphize.rs +++ b/compiler/rustc_mir/src/monomorphize/polymorphize.rs @@ -107,18 +107,48 @@ fn mark_used_by_default_parameters<'tcx>( generics: &'tcx ty::Generics, unused_parameters: &mut FiniteBitSet<u32>, ) { - if !tcx.is_trait(def_id) && (tcx.is_closure(def_id) || tcx.type_of(def_id).is_generator()) { - for param in &generics.params { - debug!(?param, "(closure/gen)"); - unused_parameters.clear(param.index); - } - } else { - for param in &generics.params { - debug!(?param, "(other)"); - if let ty::GenericParamDefKind::Lifetime = param.kind { + match tcx.def_kind(def_id) { + DefKind::Closure | DefKind::Generator => { + for param in &generics.params { + debug!(?param, "(closure/gen)"); unused_parameters.clear(param.index); } } + DefKind::Mod + | DefKind::Struct + | DefKind::Union + | DefKind::Enum + | DefKind::Variant + | DefKind::Trait + | DefKind::TyAlias + | DefKind::ForeignTy + | DefKind::TraitAlias + | DefKind::AssocTy + | DefKind::TyParam + | DefKind::Fn + | DefKind::Const + | DefKind::ConstParam + | DefKind::Static + | DefKind::Ctor(_, _) + | DefKind::AssocFn + | DefKind::AssocConst + | DefKind::Macro(_) + | DefKind::ExternCrate + | DefKind::Use + | DefKind::ForeignMod + | DefKind::AnonConst + | DefKind::OpaqueTy + | DefKind::Field + | DefKind::LifetimeParam + | DefKind::GlobalAsm + | DefKind::Impl => { + for param in &generics.params { + debug!(?param, "(other)"); + if let ty::GenericParamDefKind::Lifetime = param.kind { + unused_parameters.clear(param.index); + } + } + } } if let Some(parent) = generics.parent { |
