diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-03-18 22:24:38 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-18 22:24:38 +0100 |
| commit | 980248605a6e3af15e64b93285654fb4e15b1015 (patch) | |
| tree | f926c5ce1da57816de951c1c7a0180286c9cbd55 /compiler/rustc_passes | |
| parent | b19c67c0fc870b753027c2cb0ad3e7eb2fff165b (diff) | |
| parent | 6c31f6ce1211a9f635526652eb85002850620277 (diff) | |
| download | rust-980248605a6e3af15e64b93285654fb4e15b1015.tar.gz rust-980248605a6e3af15e64b93285654fb4e15b1015.zip | |
Rollup merge of #122158 - estebank:feature-sugg, r=WaffleLapkin
Provide structured suggestion for `#![feature(foo)]` ``` error: `S2<'_>` is forbidden as the type of a const generic parameter --> $DIR/lifetime-in-const-param.rs:5:23 | LL | struct S<'a, const N: S2>(&'a ()); | ^^ | = note: the only supported types are integers, `bool` and `char` help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types | LL + #![feature(adt_const_params)] | ``` Fix #55941.
Diffstat (limited to 'compiler/rustc_passes')
| -rw-r--r-- | compiler/rustc_passes/src/check_const.rs | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/compiler/rustc_passes/src/check_const.rs b/compiler/rustc_passes/src/check_const.rs index 30a65d69c4e..8080216a252 100644 --- a/compiler/rustc_passes/src/check_const.rs +++ b/compiler/rustc_passes/src/check_const.rs @@ -155,16 +155,11 @@ impl<'tcx> CheckConstVisitor<'tcx> { // // FIXME(ecstaticmorse): Maybe this could be incorporated into `feature_err`? This // is a pretty narrow case, however. - if tcx.sess.is_nightly_build() { - for gate in missing_secondary { - // FIXME: make this translatable - #[allow(rustc::diagnostic_outside_of_impl)] - #[allow(rustc::untranslatable_diagnostic)] - err.help(format!( - "add `#![feature({gate})]` to the crate attributes to enable" - )); - } - } + tcx.disabled_nightly_features( + &mut err, + def_id.map(|id| tcx.local_def_id_to_hir_id(id)), + missing_secondary.into_iter().map(|gate| (String::new(), *gate)), + ); err.emit(); } |
