Put lazy normalization behind a feature gate
This commit is contained in:
parent
3ef831069a
commit
93d15b9480
26 changed files with 207 additions and 67 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete
|
||||
|
||||
#[allow(dead_code)]
|
||||
struct ArithArrayLen<const N: usize>([u32; 0 + N]);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,14 @@ LL | #![feature(const_generics)]
|
|||
= note: `#[warn(incomplete_features)]` on by default
|
||||
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
|
||||
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/array-size-in-generic-struct-param.rs:3:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: constant expression depends on a generic parameter
|
||||
--> $DIR/array-size-in-generic-struct-param.rs:5:38
|
||||
--> $DIR/array-size-in-generic-struct-param.rs:7:38
|
||||
|
|
||||
LL | struct ArithArrayLen<const N: usize>([u32; 0 + N]);
|
||||
| ^^^^^^^^^^^^
|
||||
|
|
@ -16,7 +22,7 @@ LL | struct ArithArrayLen<const N: usize>([u32; 0 + N]);
|
|||
= note: this may fail depending on what value the parameter takes
|
||||
|
||||
error: constant expression depends on a generic parameter
|
||||
--> $DIR/array-size-in-generic-struct-param.rs:14:5
|
||||
--> $DIR/array-size-in-generic-struct-param.rs:16:5
|
||||
|
|
||||
LL | arr: [u8; CFG.arr_size],
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete
|
||||
|
||||
// build-pass
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete
|
||||
|
||||
fn f<T: Copy, const N: usize>(x: T) -> [T; N] {
|
||||
[x; { N }]
|
||||
|
|
|
|||
|
|
@ -7,6 +7,12 @@ LL | #![feature(const_generics)]
|
|||
= note: `#[warn(incomplete_features)]` on by default
|
||||
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
|
||||
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/issue-61336-2.rs:3:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
|
||||
--> $DIR/issue-61336-2.rs:9:5
|
||||
|
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete
|
||||
|
||||
fn f<T: Copy, const N: usize>(x: T) -> [T; N] {
|
||||
[x; N]
|
||||
|
|
|
|||
|
|
@ -7,6 +7,12 @@ LL | #![feature(const_generics)]
|
|||
= note: `#[warn(incomplete_features)]` on by default
|
||||
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
|
||||
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/issue-61336.rs:3:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
|
||||
--> $DIR/issue-61336.rs:9:5
|
||||
|
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete
|
||||
|
||||
struct Const<const N: usize>;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,13 @@ LL | #![feature(const_generics)]
|
|||
= note: `#[warn(incomplete_features)]` on by default
|
||||
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
|
||||
|
||||
<<<<<<< HEAD
|
||||
warning: 1 warning emitted
|
||||
=======
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/issue-61747.rs:5:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
>>>>>>> Added `lazy_normalization_consts` feature, and removed the -Z flag.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete and may cause the compiler to crash
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
|
||||
trait Foo {}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,3 +6,9 @@ LL | #![feature(const_generics)]
|
|||
= note: `#[warn(incomplete_features)]` on by default
|
||||
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
|
||||
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/issue-61935.rs:5:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#![allow(incomplete_features, dead_code, unconditional_recursion)]
|
||||
#![feature(const_generics)]
|
||||
#![feature(lazy_normalization_consts)]
|
||||
|
||||
fn fact<const N: usize>() {
|
||||
fact::<{ N - 1 }>();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete and may cause the compiler to crash
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
|
||||
trait Baz {
|
||||
type Quaks;
|
||||
|
|
|
|||
|
|
@ -6,3 +6,9 @@ LL | #![feature(const_generics)]
|
|||
|
|
||||
= note: `#[warn(incomplete_features)]` on by default
|
||||
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/issue-67185-1.rs:5:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#![feature(const_generics)]
|
||||
//~^ WARN the feature `const_generics` is incomplete and may cause the compiler to crash
|
||||
#![feature(lazy_normalization_consts)]
|
||||
//~^ WARN the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
|
||||
trait Baz {
|
||||
type Quaks;
|
||||
|
|
@ -12,7 +14,8 @@ trait Bar {}
|
|||
impl Bar for [u16; 4] {}
|
||||
impl Bar for [[u16; 3]; 3] {}
|
||||
|
||||
trait Foo //~ ERROR mismatched types
|
||||
trait Foo //~ ERROR the trait bound `[u16; 3]: Bar` is not satisfied [E0277]
|
||||
//~^ ERROR the trait bound `[[u16; 3]; 2]: Bar` is not satisfied [E0277]
|
||||
where
|
||||
[<u8 as Baz>::Quaks; 2]: Bar,
|
||||
<u8 as Baz>::Quaks: Bar,
|
||||
|
|
@ -22,12 +25,12 @@ trait Foo //~ ERROR mismatched types
|
|||
struct FooImpl;
|
||||
|
||||
impl Foo for FooImpl {}
|
||||
//~^ ERROR mismatched types
|
||||
//~^^ ERROR mismatched types
|
||||
//~^ ERROR the trait bound `[u16; 3]: Bar` is not satisfied [E0277]
|
||||
//~^^ ERROR the trait bound `[[u16; 3]; 2]: Bar` is not satisfied [E0277]
|
||||
|
||||
fn f(_: impl Foo) {}
|
||||
//~^ ERROR mismatched types
|
||||
//~^^ ERROR mismatched types
|
||||
//~^ ERROR the trait bound `[u16; 3]: Bar` is not satisfied [E0277]
|
||||
//~^^ ERROR the trait bound `[[u16; 3]; 2]: Bar` is not satisfied [E0277]
|
||||
|
||||
fn main() {
|
||||
f(FooImpl)
|
||||
|
|
|
|||
|
|
@ -6,56 +6,106 @@ LL | #![feature(const_generics)]
|
|||
|
|
||||
= note: `#[warn(incomplete_features)]` on by default
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-67185-2.rs:15:1
|
||||
warning: the feature `lazy_normalization_consts` is incomplete and may cause the compiler to crash
|
||||
--> $DIR/issue-67185-2.rs:3:12
|
||||
|
|
||||
LL | #![feature(lazy_normalization_consts)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: the trait bound `[u16; 3]: Bar` is not satisfied
|
||||
--> $DIR/issue-67185-2.rs:17:1
|
||||
|
|
||||
LL | / trait Foo
|
||||
LL | |
|
||||
LL | | where
|
||||
LL | | [<u8 as Baz>::Quaks; 2]: Bar,
|
||||
LL | | <u8 as Baz>::Quaks: Bar,
|
||||
LL | | {
|
||||
LL | | }
|
||||
| |_^ expected `3usize`, found `4usize`
|
||||
| |_^ the trait `Bar` is not implemented for `[u16; 3]`
|
||||
|
|
||||
= note: expected type `3usize`
|
||||
found type `4usize`
|
||||
= help: the following implementations were found:
|
||||
<[[u16; 3]; 3] as Bar>
|
||||
<[u16; 4] as Bar>
|
||||
= help: see issue #48214
|
||||
= help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-67185-2.rs:24:6
|
||||
error[E0277]: the trait bound `[[u16; 3]; 2]: Bar` is not satisfied
|
||||
--> $DIR/issue-67185-2.rs:17:1
|
||||
|
|
||||
LL | / trait Foo
|
||||
LL | |
|
||||
LL | | where
|
||||
LL | | [<u8 as Baz>::Quaks; 2]: Bar,
|
||||
LL | | <u8 as Baz>::Quaks: Bar,
|
||||
LL | | {
|
||||
LL | | }
|
||||
| |_^ the trait `Bar` is not implemented for `[[u16; 3]; 2]`
|
||||
|
|
||||
= help: the following implementations were found:
|
||||
<[[u16; 3]; 3] as Bar>
|
||||
<[u16; 4] as Bar>
|
||||
= help: see issue #48214
|
||||
= help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
||||
|
||||
error[E0277]: the trait bound `[u16; 3]: Bar` is not satisfied
|
||||
--> $DIR/issue-67185-2.rs:27:6
|
||||
|
|
||||
LL | impl Foo for FooImpl {}
|
||||
| ^^^ expected `3usize`, found `4usize`
|
||||
| ^^^ the trait `Bar` is not implemented for `[u16; 3]`
|
||||
|
|
||||
= note: expected type `3usize`
|
||||
found type `4usize`
|
||||
= help: the following implementations were found:
|
||||
<[[u16; 3]; 3] as Bar>
|
||||
<[u16; 4] as Bar>
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-67185-2.rs:24:6
|
||||
error[E0277]: the trait bound `[[u16; 3]; 2]: Bar` is not satisfied
|
||||
--> $DIR/issue-67185-2.rs:27:6
|
||||
|
|
||||
LL | impl Foo for FooImpl {}
|
||||
| ^^^ expected `2usize`, found `3usize`
|
||||
| ^^^ the trait `Bar` is not implemented for `[[u16; 3]; 2]`
|
||||
|
|
||||
= note: expected type `2usize`
|
||||
found type `3usize`
|
||||
= help: the following implementations were found:
|
||||
<[[u16; 3]; 3] as Bar>
|
||||
<[u16; 4] as Bar>
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-67185-2.rs:28:1
|
||||
error[E0277]: the trait bound `[[u16; 3]; 2]: Bar` is not satisfied
|
||||
--> $DIR/issue-67185-2.rs:31:14
|
||||
|
|
||||
LL | fn f(_: impl Foo) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^ expected `2usize`, found `3usize`
|
||||
LL | / trait Foo
|
||||
LL | |
|
||||
LL | | where
|
||||
LL | | [<u8 as Baz>::Quaks; 2]: Bar,
|
||||
LL | | <u8 as Baz>::Quaks: Bar,
|
||||
LL | | {
|
||||
LL | | }
|
||||
| |_- required by `Foo`
|
||||
...
|
||||
LL | fn f(_: impl Foo) {}
|
||||
| ^^^ the trait `Bar` is not implemented for `[[u16; 3]; 2]`
|
||||
|
|
||||
= note: expected type `2usize`
|
||||
found type `3usize`
|
||||
= help: the following implementations were found:
|
||||
<[[u16; 3]; 3] as Bar>
|
||||
<[u16; 4] as Bar>
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-67185-2.rs:28:1
|
||||
error[E0277]: the trait bound `[u16; 3]: Bar` is not satisfied
|
||||
--> $DIR/issue-67185-2.rs:31:14
|
||||
|
|
||||
LL | fn f(_: impl Foo) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^ expected `3usize`, found `4usize`
|
||||
LL | / trait Foo
|
||||
LL | |
|
||||
LL | | where
|
||||
LL | | [<u8 as Baz>::Quaks; 2]: Bar,
|
||||
LL | | <u8 as Baz>::Quaks: Bar,
|
||||
LL | | {
|
||||
LL | | }
|
||||
| |_- required by `Foo`
|
||||
...
|
||||
LL | fn f(_: impl Foo) {}
|
||||
| ^^^ the trait `Bar` is not implemented for `[u16; 3]`
|
||||
|
|
||||
= note: expected type `3usize`
|
||||
found type `4usize`
|
||||
= help: the following implementations were found:
|
||||
<[[u16; 3]; 3] as Bar>
|
||||
<[u16; 4] as Bar>
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue