Correct parent for nested anon consts
This commit is contained in:
parent
d2fb97fcec
commit
bfb7757c3c
3 changed files with 52 additions and 5 deletions
|
|
@ -0,0 +1,20 @@
|
|||
// Given an anon const `a`: `{ N }` and some anon const `b` which references the
|
||||
// first anon const: `{ [1; a] }`. `b` should not have any generics as it is not
|
||||
// a simple `N` argument nor is it a repeat expr count.
|
||||
//
|
||||
// On the other hand `b` *is* a repeat expr count and so it should inherit its
|
||||
// parents generics as part of the `const_evaluatable_unchecked` fcw (#76200).
|
||||
//
|
||||
// In this specific case however `b`'s parent should be `a` and so it should wind
|
||||
// up not having any generics after all. If `a` were to inherit its generics from
|
||||
// the enclosing item then the reference to `a` from `b` would contain generic
|
||||
// parameters not usable by `b` which would cause us to ICE.
|
||||
|
||||
fn bar<const N: usize>() {}
|
||||
|
||||
fn foo<const N: usize>() {
|
||||
bar::<{ [1; N] }>();
|
||||
//~^ ERROR: generic parameters may not be used in const operations
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
error: generic parameters may not be used in const operations
|
||||
--> $DIR/repeat_expr_hack_gives_right_generics.rs:16:17
|
||||
|
|
||||
LL | bar::<{ [1; N] }>();
|
||||
| ^ cannot perform const operation using `N`
|
||||
|
|
||||
= help: const parameters may only be used as standalone arguments, i.e. `N`
|
||||
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue