diff options
| author | kadmin <julianknodt@gmail.com> | 2020-08-11 00:02:45 +0000 |
|---|---|---|
| committer | kadmin <julianknodt@gmail.com> | 2021-03-23 17:16:20 +0000 |
| commit | e4e5db4e4207e21c38c07640d44005dab022f1b8 (patch) | |
| tree | 32856def2da071e067f79505960bf18debd407e4 /src/test | |
| parent | 79e5814f4520f2c51b5307421db45cd82d134e76 (diff) | |
| download | rust-e4e5db4e4207e21c38c07640d44005dab022f1b8.tar.gz rust-e4e5db4e4207e21c38c07640d44005dab022f1b8.zip | |
Add has_default to GenericParamDefKind::Const
This currently creates a field which is always false on GenericParamDefKind for future use when consts are permitted to have defaults Update const_generics:default locations Previously just ignored them, now actually do something about them. Fix using type check instead of value Add parsing This adds all the necessary changes to lower const-generics defaults from parsing. Change P<Expr> to AnonConst This matches the arguments passed to instantiations of const generics, and makes it specific to just anonymous constants. Attempt to fix lowering bugs
Diffstat (limited to 'src/test')
5 files changed, 33 insertions, 2 deletions
diff --git a/src/test/ui/const-generics/defaults/const-default.rs b/src/test/ui/const-generics/defaults/const-default.rs new file mode 100644 index 00000000000..b2286e7d5bd --- /dev/null +++ b/src/test/ui/const-generics/defaults/const-default.rs @@ -0,0 +1,15 @@ +// check-pass + +#![feature(const_generics)] +#![feature(const_generic_defaults)] +#![allow(incomplete_features)] + + +#[derive(Default)] +pub struct ConstDefault<const N: usize = 3> { + items: [u32; N] +} + +pub fn main() { + let s = ConstDefault::default(); +} diff --git a/src/test/ui/const-generics/min_const_generics/default_function_param.rs b/src/test/ui/const-generics/min_const_generics/default_function_param.rs index 5b0a42a4556..e4044eaaa7c 100644 --- a/src/test/ui/const-generics/min_const_generics/default_function_param.rs +++ b/src/test/ui/const-generics/min_const_generics/default_function_param.rs @@ -1,3 +1,6 @@ +#![feature(const_generic_defaults)] +#![feature(min_const_generics)] + fn foo<const SIZE: usize = 5>() {} //~^ ERROR default values for const generic parameters are experimental diff --git a/src/test/ui/const-generics/min_const_generics/default_trait_param.rs b/src/test/ui/const-generics/min_const_generics/default_trait_param.rs index 14bac473ed9..c3581aca1cf 100644 --- a/src/test/ui/const-generics/min_const_generics/default_trait_param.rs +++ b/src/test/ui/const-generics/min_const_generics/default_trait_param.rs @@ -1,4 +1,2 @@ trait Foo<const KIND: bool = true> {} //~^ ERROR default values for const generic parameters are experimental - -fn main() {} diff --git a/src/test/ui/feature-gate/feature-gate-const_generic_defaults.rs b/src/test/ui/feature-gate/feature-gate-const_generic_defaults.rs new file mode 100644 index 00000000000..6ba314666e2 --- /dev/null +++ b/src/test/ui/feature-gate/feature-gate-const_generic_defaults.rs @@ -0,0 +1,5 @@ +#![feature(min_const_generics)] +#![crate_type="lib"] + +struct A<const N: usize = 3>; +//~^ ERROR default values for diff --git a/src/test/ui/feature-gate/feature-gate-const_generic_defaults.stderr b/src/test/ui/feature-gate/feature-gate-const_generic_defaults.stderr new file mode 100644 index 00000000000..0b7140c0c0f --- /dev/null +++ b/src/test/ui/feature-gate/feature-gate-const_generic_defaults.stderr @@ -0,0 +1,10 @@ +error: default values for const generic parameters are unstable + --> $DIR/feature-gate-const_generic_defaults.rs:4:27 + | +LL | struct A<const N: usize = 3>; + | ^ + | + = note: to enable them use #![feature(const_generic_defaults)] + +error: aborting due to previous error + |
