Rollup merge of #71018 - lcnr:custom-const-param, r=eddyb

handle ConstValue::ByRef in relate

fixes #68615

r? @eddyb
This commit is contained in:
Dylan DPC 2020-05-01 23:16:32 +02:00 committed by GitHub
commit 14c3ee906b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 90 additions and 3 deletions

View file

@ -0,0 +1,11 @@
#![feature(const_generics)]
//~^ WARN the feature `const_generics` is incomplete and may cause the compiler to crash
struct Const<const V: [usize; 1]> {}
fn main() {
let mut x = Const::<{ [3] }> {};
x = Const::<{ [4] }> {};
//~^ ERROR mismatched types
}

View file

@ -0,0 +1,20 @@
warning: the feature `const_generics` is incomplete and may cause the compiler to crash
--> $DIR/different_byref.rs:1:12
|
LL | #![feature(const_generics)]
| ^^^^^^^^^^^^^^
|
= note: `#[warn(incomplete_features)]` on by default
error[E0308]: mismatched types
--> $DIR/different_byref.rs:8:9
|
LL | x = Const::<{ [4] }> {};
| ^^^^^^^^^^^^^^^^^^^ expected `3usize`, found `4usize`
|
= note: expected struct `Const<[3usize]>`
found struct `Const<[4usize]>`
error: aborting due to previous error; 1 warning emitted
For more information about this error, try `rustc --explain E0308`.

View file

@ -0,0 +1,11 @@
// check-pass
#![feature(const_generics)]
#![allow(incomplete_features)]
struct Const<const V: [usize; 0]> {}
type MyConst = Const<{ [] }>;
fn main() {
let _x = Const::<{ [] }> {};
let _y = MyConst {};
}

View file

@ -0,0 +1,11 @@
// check-pass
#![feature(const_generics)]
#![allow(incomplete_features)]
struct Foo<const V: [usize; 0] > {}
type MyFoo = Foo<{ [] }>;
fn main() {
let _ = Foo::<{ [] }> {};
}