diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2022-07-27 17:55:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-27 17:55:04 +0200 |
| commit | 9e7b7d5e1c9199f372107e0ace1733c11d09fe37 (patch) | |
| tree | 5ad1af218214309db5ac55732215f3969db10482 /compiler/rustc_const_eval/src | |
| parent | 4ce1b0f936a070bdfca1c1fe883d192774210d7e (diff) | |
| parent | 10b69ab0d20bdbbcdfc5bfe443a50cf2b12b66de (diff) | |
| download | rust-9e7b7d5e1c9199f372107e0ace1733c11d09fe37.tar.gz rust-9e7b7d5e1c9199f372107e0ace1733c11d09fe37.zip | |
Rollup merge of #99651 - compiler-errors:fn-and-raw-ptr-in-const-generics, r=oli-obk
Deeply deny fn and raw ptrs in const generics
I think this is right -- just because we wrap a fn ptr in a wrapper type does not mean we should allow it in a const parameter.
We now reject both of these in the same way:
```
#![feature(adt_const_params)]
#[derive(Eq, PartialEq)]
struct Wrapper();
fn foo<const W: Wrapper>() {}
fn foo2<const F: fn()>() {}
```
This does regress one test (`src/test/ui/consts/refs_check_const_eq-issue-88384.stderr`), but I'm not sure it should've passed in the first place.
cc: ``@b-naber`` who introduced that test^
fixes #99641
Diffstat (limited to 'compiler/rustc_const_eval/src')
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs b/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs index 29464cf8c4e..e0994451172 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs @@ -226,7 +226,7 @@ impl Qualif for CustomEq { // because that component may be part of an enum variant (e.g., // `Option::<NonStructuralMatchTy>::Some`), in which case some values of this type may be // structural-match (`Option::None`). - traits::search_for_structural_match_violation(cx.body.span, cx.tcx, ty, true).is_some() + traits::search_for_structural_match_violation(cx.body.span, cx.tcx, ty).is_some() } fn in_adt_inherently<'tcx>( |
