Fix the testcases to not use UnsizedConstParamTy
This commit is contained in:
parent
1a02cd531d
commit
0bd2ee3a0c
43 changed files with 218 additions and 291 deletions
|
|
@ -1,6 +1,6 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
|
||||
#[derive(std::marker::UnsizedConstParamTy, Eq, PartialEq)]
|
||||
#[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
pub struct Foo([u8]);
|
||||
|
||||
#[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#![allow(incomplete_features)]
|
||||
#![feature(adt_const_params, unsized_const_params)]
|
||||
|
||||
fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
|
||||
fn main() {
|
||||
check(main); //~ error: `fn() {main}` can't be used as a const parameter type
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@ error[E0277]: `fn() {main}` can't be used as a const parameter type
|
|||
--> $DIR/const_param_ty_bad.rs:7:11
|
||||
|
|
||||
LL | check(main);
|
||||
| ----- ^^^^ the trait `UnsizedConstParamTy` is not implemented for fn item `fn() {main}`
|
||||
| ----- ^^^^ the trait `ConstParamTy_` is not implemented for fn item `fn() {main}`
|
||||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_bad.rs:4:18
|
||||
|
|
||||
LL | fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
help: use parentheses to call this function
|
||||
|
|
||||
LL | check(main());
|
||||
|
|
@ -24,12 +24,12 @@ LL | check(|| {});
|
|||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
= help: the trait `UnsizedConstParamTy` is not implemented for closure `{closure@$DIR/const_param_ty_bad.rs:8:11: 8:13}`
|
||||
= help: the trait `ConstParamTy_` is not implemented for closure `{closure@$DIR/const_param_ty_bad.rs:8:11: 8:13}`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_bad.rs:4:18
|
||||
|
|
||||
LL | fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
help: use parentheses to call this closure
|
||||
|
|
||||
LL - check(|| {});
|
||||
|
|
@ -40,15 +40,15 @@ error[E0277]: `fn()` can't be used as a const parameter type
|
|||
--> $DIR/const_param_ty_bad.rs:9:11
|
||||
|
|
||||
LL | check(main as fn());
|
||||
| ----- ^^^^^^^^^^^^ the trait `UnsizedConstParamTy` is not implemented for `fn()`
|
||||
| ----- ^^^^^^^^^^^^ the trait `ConstParamTy_` is not implemented for `fn()`
|
||||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_bad.rs:4:18
|
||||
|
|
||||
LL | fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
help: use parentheses to call this function pointer
|
||||
|
|
||||
LL | check(main as fn()());
|
||||
|
|
@ -58,16 +58,16 @@ error[E0277]: `&mut ()` can't be used as a const parameter type
|
|||
--> $DIR/const_param_ty_bad.rs:10:11
|
||||
|
|
||||
LL | check(&mut ());
|
||||
| ----- ^^^^^^^ the trait `UnsizedConstParamTy` is not implemented for `&mut ()`
|
||||
| ----- ^^^^^^^ the trait `ConstParamTy_` is not implemented for `&mut ()`
|
||||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
= note: `UnsizedConstParamTy` is implemented for `&()`, but not for `&mut ()`
|
||||
= note: `ConstParamTy_` is implemented for `&()`, but not for `&mut ()`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_bad.rs:4:18
|
||||
|
|
||||
LL | fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
help: consider removing the leading `&`-reference
|
||||
|
|
||||
LL - check(&mut ());
|
||||
|
|
@ -78,31 +78,31 @@ error[E0277]: `*mut ()` can't be used as a const parameter type
|
|||
--> $DIR/const_param_ty_bad.rs:11:11
|
||||
|
|
||||
LL | check(&mut () as *mut ());
|
||||
| ----- ^^^^^^^^^^^^^^^^^^ the trait `UnsizedConstParamTy` is not implemented for `*mut ()`
|
||||
| ----- ^^^^^^^^^^^^^^^^^^ the trait `ConstParamTy_` is not implemented for `*mut ()`
|
||||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
= help: the trait `UnsizedConstParamTy` is implemented for `()`
|
||||
= help: the trait `ConstParamTy_` is implemented for `()`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_bad.rs:4:18
|
||||
|
|
||||
LL | fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
|
||||
error[E0277]: `*const ()` can't be used as a const parameter type
|
||||
--> $DIR/const_param_ty_bad.rs:12:11
|
||||
|
|
||||
LL | check(&() as *const ());
|
||||
| ----- ^^^^^^^^^^^^^^^^ the trait `UnsizedConstParamTy` is not implemented for `*const ()`
|
||||
| ----- ^^^^^^^^^^^^^^^^ the trait `ConstParamTy_` is not implemented for `*const ()`
|
||||
| |
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
= help: the trait `UnsizedConstParamTy` is implemented for `()`
|
||||
= help: the trait `ConstParamTy_` is implemented for `()`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_bad.rs:4:18
|
||||
|
|
||||
LL | fn check(_: impl std::marker::UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check(_: impl std::marker::ConstParamTy_) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::{ConstParamTy_, UnsizedConstParamTy};
|
||||
use std::marker::ConstParamTy_;
|
||||
|
||||
fn foo(a: &dyn ConstParamTy_) {}
|
||||
//~^ ERROR: the trait `ConstParamTy_`
|
||||
|
||||
fn bar(a: &dyn UnsizedConstParamTy) {}
|
||||
//~^ ERROR: the trait `UnsizedConstParamTy`
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -15,23 +15,6 @@ LL - fn foo(a: &dyn ConstParamTy_) {}
|
|||
LL + fn foo(a: &impl ConstParamTy_) {}
|
||||
|
|
||||
|
||||
error[E0038]: the trait `UnsizedConstParamTy` is not dyn compatible
|
||||
--> $DIR/const_param_ty_dyn_compatibility.rs:9:16
|
||||
|
|
||||
LL | fn bar(a: &dyn UnsizedConstParamTy) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^ `UnsizedConstParamTy` is not dyn compatible
|
||||
|
|
||||
note: for a trait to be dyn compatible it needs to allow building a vtable
|
||||
for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
|
||||
--> $SRC_DIR/core/src/cmp.rs:LL:COL
|
||||
|
|
||||
= note: the trait is not dyn compatible because it uses `Self` as a type parameter
|
||||
help: consider using an opaque type instead
|
||||
|
|
||||
LL - fn bar(a: &dyn UnsizedConstParamTy) {}
|
||||
LL + fn bar(a: &impl UnsizedConstParamTy) {}
|
||||
|
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0038`.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#[derive(PartialEq, Eq)]
|
||||
struct NotParam;
|
||||
|
||||
fn check<T: std::marker::UnsizedConstParamTy + ?Sized>() {}
|
||||
fn check<T: std::marker::ConstParamTy_ + ?Sized>() {}
|
||||
|
||||
fn main() {
|
||||
check::<&NotParam>(); //~ error: `NotParam` can't be used as a const parameter type
|
||||
|
|
|
|||
|
|
@ -4,17 +4,17 @@ error[E0277]: `NotParam` can't be used as a const parameter type
|
|||
LL | check::<&NotParam>();
|
||||
| ^^^^^^^^^ unsatisfied trait bound
|
||||
|
|
||||
help: the trait `UnsizedConstParamTy` is not implemented for `NotParam`
|
||||
help: the trait `ConstParamTy_` is not implemented for `NotParam`
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:5:1
|
||||
|
|
||||
LL | struct NotParam;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
= note: required for `&NotParam` to implement `UnsizedConstParamTy`
|
||||
= note: required for `&NotParam` to implement `ConstParamTy_`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:7:13
|
||||
|
|
||||
LL | fn check<T: std::marker::UnsizedConstParamTy + ?Sized>() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check<T: std::marker::ConstParamTy_ + ?Sized>() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
|
||||
error[E0277]: `NotParam` can't be used as a const parameter type
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:11:13
|
||||
|
|
@ -22,17 +22,17 @@ error[E0277]: `NotParam` can't be used as a const parameter type
|
|||
LL | check::<[NotParam]>();
|
||||
| ^^^^^^^^^^ unsatisfied trait bound
|
||||
|
|
||||
help: the trait `UnsizedConstParamTy` is not implemented for `NotParam`
|
||||
help: the trait `ConstParamTy_` is not implemented for `NotParam`
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:5:1
|
||||
|
|
||||
LL | struct NotParam;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
= note: required for `[NotParam]` to implement `UnsizedConstParamTy`
|
||||
= note: required for `[NotParam]` to implement `ConstParamTy_`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:7:13
|
||||
|
|
||||
LL | fn check<T: std::marker::UnsizedConstParamTy + ?Sized>() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check<T: std::marker::ConstParamTy_ + ?Sized>() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
|
||||
error[E0277]: `NotParam` can't be used as a const parameter type
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:12:13
|
||||
|
|
@ -40,17 +40,17 @@ error[E0277]: `NotParam` can't be used as a const parameter type
|
|||
LL | check::<[NotParam; 17]>();
|
||||
| ^^^^^^^^^^^^^^ unsatisfied trait bound
|
||||
|
|
||||
help: the trait `UnsizedConstParamTy` is not implemented for `NotParam`
|
||||
help: the trait `ConstParamTy_` is not implemented for `NotParam`
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:5:1
|
||||
|
|
||||
LL | struct NotParam;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
= note: required for `[NotParam; 17]` to implement `UnsizedConstParamTy`
|
||||
= note: required for `[NotParam; 17]` to implement `ConstParamTy_`
|
||||
note: required by a bound in `check`
|
||||
--> $DIR/const_param_ty_generic_bounds_do_not_hold.rs:7:13
|
||||
|
|
||||
LL | fn check<T: std::marker::UnsizedConstParamTy + ?Sized>() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
LL | fn check<T: std::marker::ConstParamTy_ + ?Sized>() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::{ConstParamTy, ConstParamTy_};
|
||||
|
||||
#[derive(PartialEq, Eq)]
|
||||
struct S<T> {
|
||||
|
|
@ -11,15 +11,15 @@ struct S<T> {
|
|||
gen: T,
|
||||
}
|
||||
|
||||
impl<T: UnsizedConstParamTy> UnsizedConstParamTy for S<T> {}
|
||||
impl<T: ConstParamTy_> ConstParamTy_ for S<T> {}
|
||||
|
||||
#[derive(PartialEq, Eq, UnsizedConstParamTy)]
|
||||
#[derive(PartialEq, Eq, ConstParamTy)]
|
||||
struct D<T> {
|
||||
field: u8,
|
||||
gen: T,
|
||||
}
|
||||
|
||||
fn check<T: UnsizedConstParamTy + ?Sized>() {}
|
||||
fn check<T: ConstParamTy_ + ?Sized>() {}
|
||||
|
||||
fn main() {
|
||||
check::<u8>();
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ struct NotParam;
|
|||
#[derive(PartialEq, Eq)]
|
||||
struct CantParam(NotParam);
|
||||
|
||||
impl std::marker::UnsizedConstParamTy for CantParam {}
|
||||
impl std::marker::ConstParamTy_ for CantParam {}
|
||||
//~^ error: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
|
||||
#[derive(std::marker::UnsizedConstParamTy, Eq, PartialEq)]
|
||||
#[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
//~^ error: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
struct CantParamDerive(NotParam);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/const_param_ty_impl_bad_field.rs:10:43
|
||||
--> $DIR/const_param_ty_impl_bad_field.rs:10:37
|
||||
|
|
||||
LL | struct CantParam(NotParam);
|
||||
| -------- this field does not implement `ConstParamTy_`
|
||||
LL |
|
||||
LL | impl std::marker::UnsizedConstParamTy for CantParam {}
|
||||
| ^^^^^^^^^
|
||||
LL | impl std::marker::ConstParamTy_ for CantParam {}
|
||||
| ^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/const_param_ty_impl_bad_field.rs:13:10
|
||||
|
|
||||
LL | #[derive(std::marker::UnsizedConstParamTy, Eq, PartialEq)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL |
|
||||
LL | struct CantParamDerive(NotParam);
|
||||
| -------- this field does not implement `ConstParamTy_`
|
||||
|
|
|
|||
|
|
@ -3,20 +3,20 @@
|
|||
|
||||
#[derive(PartialEq, Eq)]
|
||||
struct ImplementsConstParamTy;
|
||||
impl std::marker::UnsizedConstParamTy for ImplementsConstParamTy {}
|
||||
impl std::marker::ConstParamTy_ for ImplementsConstParamTy {}
|
||||
|
||||
struct CantParam(ImplementsConstParamTy);
|
||||
|
||||
impl std::marker::UnsizedConstParamTy for CantParam {}
|
||||
impl std::marker::ConstParamTy_ for CantParam {}
|
||||
//~^ error: the type `CantParam` does not `#[derive(PartialEq)]`
|
||||
//~| ERROR the trait bound `CantParam: Eq` is not satisfied
|
||||
|
||||
#[derive(std::marker::UnsizedConstParamTy)]
|
||||
#[derive(std::marker::ConstParamTy)]
|
||||
//~^ error: the type `CantParamDerive` does not `#[derive(PartialEq)]`
|
||||
//~| ERROR the trait bound `CantParamDerive: Eq` is not satisfied
|
||||
struct CantParamDerive(ImplementsConstParamTy);
|
||||
|
||||
fn check<T: std::marker::UnsizedConstParamTy>() {}
|
||||
fn check<T: std::marker::ConstParamTy_>() {}
|
||||
|
||||
fn main() {
|
||||
check::<ImplementsConstParamTy>();
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
error[E0277]: the trait bound `CantParam: Eq` is not satisfied
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:10:43
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:10:37
|
||||
|
|
||||
LL | impl std::marker::UnsizedConstParamTy for CantParam {}
|
||||
| ^^^^^^^^^ the trait `Eq` is not implemented for `CantParam`
|
||||
LL | impl std::marker::ConstParamTy_ for CantParam {}
|
||||
| ^^^^^^^^^ the trait `Eq` is not implemented for `CantParam`
|
||||
|
|
||||
note: required by a bound in `UnsizedConstParamTy`
|
||||
note: required by a bound in `ConstParamTy_`
|
||||
--> $SRC_DIR/core/src/marker.rs:LL:COL
|
||||
help: consider annotating `CantParam` with `#[derive(Eq)]`
|
||||
|
|
||||
|
|
@ -13,26 +13,26 @@ LL | struct CantParam(ImplementsConstParamTy);
|
|||
|
|
||||
|
||||
error[E0277]: the type `CantParam` does not `#[derive(PartialEq)]`
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:10:43
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:10:37
|
||||
|
|
||||
LL | impl std::marker::UnsizedConstParamTy for CantParam {}
|
||||
| ^^^^^^^^^ unsatisfied trait bound
|
||||
LL | impl std::marker::ConstParamTy_ for CantParam {}
|
||||
| ^^^^^^^^^ unsatisfied trait bound
|
||||
|
|
||||
help: the trait `StructuralPartialEq` is not implemented for `CantParam`
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:8:1
|
||||
|
|
||||
LL | struct CantParam(ImplementsConstParamTy);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `UnsizedConstParamTy`
|
||||
note: required by a bound in `ConstParamTy_`
|
||||
--> $SRC_DIR/core/src/marker.rs:LL:COL
|
||||
|
||||
error[E0277]: the trait bound `CantParamDerive: Eq` is not satisfied
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:14:10
|
||||
|
|
||||
LL | #[derive(std::marker::UnsizedConstParamTy)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Eq` is not implemented for `CantParamDerive`
|
||||
LL | #[derive(std::marker::ConstParamTy)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Eq` is not implemented for `CantParamDerive`
|
||||
|
|
||||
note: required by a bound in `UnsizedConstParamTy`
|
||||
note: required by a bound in `ConstParamTy_`
|
||||
--> $SRC_DIR/core/src/marker.rs:LL:COL
|
||||
help: consider annotating `CantParamDerive` with `#[derive(Eq)]`
|
||||
|
|
||||
|
|
@ -43,15 +43,15 @@ LL | struct CantParamDerive(ImplementsConstParamTy);
|
|||
error[E0277]: the type `CantParamDerive` does not `#[derive(PartialEq)]`
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:14:10
|
||||
|
|
||||
LL | #[derive(std::marker::UnsizedConstParamTy)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
|
||||
LL | #[derive(std::marker::ConstParamTy)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
|
||||
|
|
||||
help: the trait `StructuralPartialEq` is not implemented for `CantParamDerive`
|
||||
--> $DIR/const_param_ty_impl_no_structural_eq.rs:17:1
|
||||
|
|
||||
LL | struct CantParamDerive(ImplementsConstParamTy);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `UnsizedConstParamTy`
|
||||
note: required by a bound in `ConstParamTy_`
|
||||
--> $SRC_DIR/core/src/marker.rs:LL:COL
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@ impl PartialEq for Union {
|
|||
}
|
||||
impl Eq for Union {}
|
||||
|
||||
impl std::marker::UnsizedConstParamTy for Union {}
|
||||
impl std::marker::ConstParamTy_ for Union {}
|
||||
//~^ ERROR the trait `ConstParamTy` may not be implemented for this type
|
||||
|
||||
#[derive(std::marker::UnsizedConstParamTy)]
|
||||
#[derive(std::marker::ConstParamTy)]
|
||||
//~^ ERROR this trait cannot be derived for unions
|
||||
union UnionDerive {
|
||||
a: u8,
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
error: this trait cannot be derived for unions
|
||||
--> $DIR/const_param_ty_impl_union.rs:18:10
|
||||
|
|
||||
LL | #[derive(std::marker::UnsizedConstParamTy)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | #[derive(std::marker::ConstParamTy)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: the trait `ConstParamTy` may not be implemented for this type
|
||||
--> $DIR/const_param_ty_impl_union.rs:15:43
|
||||
--> $DIR/const_param_ty_impl_union.rs:15:37
|
||||
|
|
||||
LL | impl std::marker::UnsizedConstParamTy for Union {}
|
||||
| ^^^^^ type is not a structure or enumeration
|
||||
LL | impl std::marker::ConstParamTy_ for Union {}
|
||||
| ^^^^^ type is not a structure or enumeration
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -5,17 +5,14 @@ use std::marker::ConstParamTy;
|
|||
|
||||
#[derive(ConstParamTy)]
|
||||
//~^ ERROR the trait `ConstParamTy_` cannot be implemented for this ty
|
||||
//~| ERROR the trait `ConstParamTy_` cannot be implemented for this ty
|
||||
struct Foo([*const u8; 1]);
|
||||
|
||||
#[derive(ConstParamTy)]
|
||||
//~^ ERROR the trait `ConstParamTy_` cannot be implemented for this ty
|
||||
//~| ERROR the trait `ConstParamTy_` cannot be implemented for this ty
|
||||
struct Foo2([*mut u8; 1]);
|
||||
|
||||
#[derive(ConstParamTy)]
|
||||
//~^ ERROR the trait `ConstParamTy_` cannot be implemented for this ty
|
||||
//~| ERROR the trait `ConstParamTy_` cannot be implemented for this ty
|
||||
struct Foo3([fn(); 1]);
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -3,91 +3,46 @@ error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
|||
|
|
||||
LL | #[derive(ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
LL |
|
||||
LL | struct Foo([*const u8; 1]);
|
||||
| -------------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[*const u8; 1]` requires that `*const u8: ConstParamTy_`
|
||||
--> $DIR/nested_bad_const_param_ty.rs:9:12
|
||||
--> $DIR/nested_bad_const_param_ty.rs:8:12
|
||||
|
|
||||
LL | struct Foo([*const u8; 1]);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/nested_bad_const_param_ty.rs:11:10
|
||||
--> $DIR/nested_bad_const_param_ty.rs:10:10
|
||||
|
|
||||
LL | #[derive(ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
LL |
|
||||
LL | struct Foo2([*mut u8; 1]);
|
||||
| ------------ this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[*mut u8; 1]` requires that `*mut u8: ConstParamTy_`
|
||||
--> $DIR/nested_bad_const_param_ty.rs:14:13
|
||||
--> $DIR/nested_bad_const_param_ty.rs:12:13
|
||||
|
|
||||
LL | struct Foo2([*mut u8; 1]);
|
||||
| ^^^^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/nested_bad_const_param_ty.rs:16:10
|
||||
--> $DIR/nested_bad_const_param_ty.rs:14:10
|
||||
|
|
||||
LL | #[derive(ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
LL |
|
||||
LL | struct Foo3([fn(); 1]);
|
||||
| --------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[fn(); 1]` requires that `fn(): ConstParamTy_`
|
||||
--> $DIR/nested_bad_const_param_ty.rs:19:13
|
||||
--> $DIR/nested_bad_const_param_ty.rs:16:13
|
||||
|
|
||||
LL | struct Foo3([fn(); 1]);
|
||||
| ^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/nested_bad_const_param_ty.rs:6:10
|
||||
|
|
||||
LL | #[derive(ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
LL | struct Foo([*const u8; 1]);
|
||||
| -------------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[*const u8; 1]` requires that `*const u8: UnsizedConstParamTy`
|
||||
--> $DIR/nested_bad_const_param_ty.rs:9:12
|
||||
|
|
||||
LL | struct Foo([*const u8; 1]);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/nested_bad_const_param_ty.rs:11:10
|
||||
|
|
||||
LL | #[derive(ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
LL | struct Foo2([*mut u8; 1]);
|
||||
| ------------ this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[*mut u8; 1]` requires that `*mut u8: UnsizedConstParamTy`
|
||||
--> $DIR/nested_bad_const_param_ty.rs:14:13
|
||||
|
|
||||
LL | struct Foo2([*mut u8; 1]);
|
||||
| ^^^^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/nested_bad_const_param_ty.rs:16:10
|
||||
|
|
||||
LL | #[derive(ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
LL | struct Foo3([fn(); 1]);
|
||||
| --------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[fn(); 1]` requires that `fn(): UnsizedConstParamTy`
|
||||
--> $DIR/nested_bad_const_param_ty.rs:19:13
|
||||
|
|
||||
LL | struct Foo3([fn(); 1]);
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0204`.
|
||||
|
|
|
|||
|
|
@ -9,11 +9,13 @@ help: you might be missing a const parameter
|
|||
LL | impl<const bar: /* Type */> Wrapper<{ bar() }> {
|
||||
| +++++++++++++++++++++++
|
||||
|
||||
error[E0741]: using function pointers as const generic parameters is forbidden
|
||||
error: using function pointers as const generic parameters is forbidden
|
||||
--> $DIR/non_valtreeable_const_arg-2.rs:8:25
|
||||
|
|
||||
LL | struct Wrapper<const F: fn()>;
|
||||
| ^^^^
|
||||
|
|
||||
= note: the only supported types are integers, `bool`, and `char`
|
||||
|
||||
error[E0599]: the function or associated item `call` exists for struct `Wrapper<function>`, but its trait bounds were not satisfied
|
||||
--> $DIR/non_valtreeable_const_arg-2.rs:17:26
|
||||
|
|
@ -35,5 +37,5 @@ note: the trait `Fn` must be implemented
|
|||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0425, E0599, E0741.
|
||||
Some errors have detailed explanations: E0425, E0599.
|
||||
For more information about an error, try `rustc --explain E0425`.
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::ConstParamTy_;
|
||||
|
||||
struct Foo;
|
||||
|
||||
impl UnsizedConstParamTy for &'static Foo {}
|
||||
impl ConstParamTy_ for &'static Foo {}
|
||||
//~^ ERROR: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/reference_pointee_is_const_param-1.rs:8:30
|
||||
--> $DIR/reference_pointee_is_const_param-1.rs:8:24
|
||||
|
|
||||
LL | impl UnsizedConstParamTy for &'static Foo {}
|
||||
| ^^^^^^^^^^^^ this field does not implement `ConstParamTy_`
|
||||
LL | impl ConstParamTy_ for &'static Foo {}
|
||||
| ^^^^^^^^^^^^ this field does not implement `ConstParamTy_`
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
// Regression test for #119299
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::ConstParamTy_;
|
||||
|
||||
#[derive(Eq, PartialEq)]
|
||||
struct ConstStrU(*const u8, usize);
|
||||
|
||||
impl UnsizedConstParamTy for &'static ConstStrU {}
|
||||
impl ConstParamTy_ for &'static ConstStrU {}
|
||||
//~^ ERROR: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
|
||||
impl ConstStrU {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/reference_pointee_is_const_param-2.rs:11:30
|
||||
--> $DIR/reference_pointee_is_const_param-2.rs:11:24
|
||||
|
|
||||
LL | impl UnsizedConstParamTy for &'static ConstStrU {}
|
||||
| ^^^^^^^^^^^^^^^^^^ this field does not implement `ConstParamTy_`
|
||||
LL | impl ConstParamTy_ for &'static ConstStrU {}
|
||||
| ^^^^^^^^^^^^^^^^^^ this field does not implement `ConstParamTy_`
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::ConstParamTy_;
|
||||
|
||||
trait Trait {}
|
||||
|
||||
impl UnsizedConstParamTy for dyn Trait {}
|
||||
impl ConstParamTy_ for dyn Trait {}
|
||||
//~^ ERROR: the trait `ConstParamTy` may not be implemented for this type
|
||||
|
||||
fn foo<const N: dyn Trait>() {}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error: the trait `ConstParamTy` may not be implemented for this type
|
||||
--> $DIR/trait_objects_as_a_const_generic.rs:8:30
|
||||
--> $DIR/trait_objects_as_a_const_generic.rs:8:24
|
||||
|
|
||||
LL | impl UnsizedConstParamTy for dyn Trait {}
|
||||
| ^^^^^^^^^ type is not a structure or enumeration
|
||||
LL | impl ConstParamTy_ for dyn Trait {}
|
||||
| ^^^^^^^^^ type is not a structure or enumeration
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,10 @@ struct A([u8]);
|
|||
struct B(&'static [u8]);
|
||||
|
||||
#[derive(ConstParamTy, Eq, PartialEq)]
|
||||
//~^ ERROR: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
struct C(unsized_const_param::Foo);
|
||||
|
||||
#[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
//~^ ERROR: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
struct D(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,12 @@ LL | #[derive(ConstParamTy, Eq, PartialEq)]
|
|||
LL |
|
||||
LL | struct A([u8]);
|
||||
| ---- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `[u8]` requires that `unstable feature: `unsized_const_params``
|
||||
--> $DIR/unsized_field-1.rs:10:10
|
||||
|
|
||||
LL | struct A([u8]);
|
||||
| ^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/unsized_field-1.rs:12:10
|
||||
|
|
@ -15,15 +21,27 @@ LL | #[derive(ConstParamTy, Eq, PartialEq)]
|
|||
LL |
|
||||
LL | struct B(&'static [u8]);
|
||||
| ------------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `&'static [u8]` requires that `unstable feature: `unsized_const_params``
|
||||
--> $DIR/unsized_field-1.rs:14:10
|
||||
|
|
||||
LL | struct B(&'static [u8]);
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/unsized_field-1.rs:16:10
|
||||
--> $DIR/unsized_field-1.rs:19:10
|
||||
|
|
||||
LL | #[derive(ConstParamTy, Eq, PartialEq)]
|
||||
| ^^^^^^^^^^^^
|
||||
LL | #[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL |
|
||||
LL | struct C(unsized_const_param::Foo);
|
||||
| ------------------------ this field does not implement `ConstParamTy_`
|
||||
LL | struct D(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
| ---------------------------------------------------------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `GenericNotUnsizedParam<&'static [u8]>` requires that `unstable feature: `unsized_const_params``
|
||||
--> $DIR/unsized_field-1.rs:21:10
|
||||
|
|
||||
LL | struct D(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
//@ aux-build:unsized_const_param.rs
|
||||
#![feature(adt_const_params, unsized_const_params)]
|
||||
//~^ WARN: the feature `unsized_const_params` is incomplete
|
||||
|
||||
extern crate unsized_const_param;
|
||||
|
||||
#[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
//~^ ERROR: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
struct A(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
|
||||
#[derive(std::marker::UnsizedConstParamTy, Eq, PartialEq)]
|
||||
struct B(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
warning: the feature `unsized_const_params` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||
--> $DIR/unsized_field-2.rs:2:30
|
||||
|
|
||||
LL | #![feature(adt_const_params, unsized_const_params)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #95174 <https://github.com/rust-lang/rust/issues/95174> for more information
|
||||
= note: `#[warn(incomplete_features)]` on by default
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/unsized_field-2.rs:7:10
|
||||
|
|
||||
LL | #[derive(std::marker::ConstParamTy, Eq, PartialEq)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL |
|
||||
LL | struct A(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
| ---------------------------------------------------------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
note: the `ConstParamTy_` impl for `GenericNotUnsizedParam<&'static [u8]>` requires that `&'static [u8]: ConstParamTy_`
|
||||
--> $DIR/unsized_field-2.rs:9:10
|
||||
|
|
||||
LL | struct A(unsized_const_param::GenericNotUnsizedParam<&'static [u8]>);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0204`.
|
||||
|
|
@ -7,7 +7,6 @@ use std::marker::ConstParamTy;
|
|||
|
||||
#[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
//~^ ERROR the trait `ConstParamTy_`
|
||||
//~| ERROR the trait `ConstParamTy_`
|
||||
struct Foo {
|
||||
nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
//~^ ERROR the size for values
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
error[E0277]: the size for values of type `(dyn Debug + 'static)` cannot be known at compilation time
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:13
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:13
|
||||
|
|
||||
LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `(dyn Debug + 'static)`
|
||||
note: required by an implicit `Sized` bound in `Bar`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:21:12
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:12
|
||||
|
|
||||
LL | struct Bar<T>(T);
|
||||
| ^ required by the implicit `Sized` requirement on this type parameter in `Bar`
|
||||
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:21:12
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:12
|
||||
|
|
||||
LL | struct Bar<T>(T);
|
||||
| ^ - ...if indirection were used here: `Box<T>`
|
||||
|
|
@ -26,34 +26,25 @@ LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
|||
...
|
||||
LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
| ----------------------------------------- this field does not implement `ConstParamTy_`
|
||||
|
||||
error[E0204]: the trait `ConstParamTy_` cannot be implemented for this type
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:8:32
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| ^^^^^^^^^^^^
|
||||
...
|
||||
note: the `ConstParamTy_` impl for `&'static Bar<(dyn Debug + 'static)>` requires that `(dyn Debug + 'static): ConstParamTy_`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:13
|
||||
|
|
||||
LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
| ----------------------------------------- this field does not implement `ConstParamTy_`
|
||||
|
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: the `ConstParamTy_` impl for `&'static Bar<(dyn Debug + 'static)>` requires that `(dyn Debug + 'static): Eq`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:13
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:13
|
||||
|
|
||||
LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: the `ConstParamTy_` impl for `&'static Bar<(dyn Debug + 'static)>` requires that `(dyn Debug + 'static): Sized`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:13
|
||||
|
|
||||
LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: the `ConstParamTy_` impl for `&'static Bar<(dyn Debug + 'static)>` requires that `(dyn Debug + 'static): UnsizedConstParamTy`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:13
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:13
|
||||
|
|
||||
LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: the size for values of type `(dyn Debug + 'static)` cannot be known at compilation time
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:5
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:5
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| ----- in this derive macro expansion
|
||||
|
|
@ -64,7 +55,7 @@ LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
|||
= help: the trait `Sized` is not implemented for `(dyn Debug + 'static)`
|
||||
= help: the trait `Debug` is implemented for `Bar<T>`
|
||||
note: required for `Bar<(dyn Debug + 'static)>` to implement `Debug`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:10
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:19:10
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| ^^^^^
|
||||
|
|
@ -75,7 +66,7 @@ LL | struct Bar<T>(T);
|
|||
= note: required for the cast from `&&&'static Bar<(dyn Debug + 'static)>` to `&dyn Debug`
|
||||
|
||||
error[E0369]: binary operation `==` cannot be applied to type `&Bar<dyn Debug>`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:5
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:5
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| --------- in this derive macro expansion
|
||||
|
|
@ -84,7 +75,7 @@ LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
|||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: the trait bound `dyn Debug: Eq` is not satisfied
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:5
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:5
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| -- in this derive macro expansion
|
||||
|
|
@ -94,7 +85,7 @@ LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
|||
|
|
||||
= help: the trait `Eq` is implemented for `Bar<T>`
|
||||
note: required for `Bar<dyn Debug>` to implement `Eq`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:28
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:19:28
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| ^^ unsatisfied trait bound introduced in this `derive` macro
|
||||
|
|
@ -104,7 +95,7 @@ note: required by a bound in `AssertParamIsEq`
|
|||
--> $SRC_DIR/core/src/cmp.rs:LL:COL
|
||||
|
||||
error[E0277]: the size for values of type `dyn Debug` cannot be known at compilation time
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:12:5
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:11:5
|
||||
|
|
||||
LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
| -- in this derive macro expansion
|
||||
|
|
@ -114,12 +105,12 @@ LL | nested: &'static Bar<dyn std::fmt::Debug>,
|
|||
|
|
||||
= help: the trait `Sized` is not implemented for `dyn Debug`
|
||||
note: required by an implicit `Sized` bound in `Bar`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:21:12
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:12
|
||||
|
|
||||
LL | struct Bar<T>(T);
|
||||
| ^ required by the implicit `Sized` requirement on this type parameter in `Bar`
|
||||
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:21:12
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:12
|
||||
|
|
||||
LL | struct Bar<T>(T);
|
||||
| ^ - ...if indirection were used here: `Box<T>`
|
||||
|
|
@ -127,26 +118,26 @@ LL | struct Bar<T>(T);
|
|||
| this could be changed to `T: ?Sized`...
|
||||
|
||||
error[E0277]: the size for values of type `(dyn Debug + 'static)` cannot be known at compilation time
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:26:33
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:25:33
|
||||
|
|
||||
LL | let x: Test<{ Foo { nested: &Bar(4) } }> = Test;
|
||||
| ^^^^^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: the trait `Sized` is not implemented for `(dyn Debug + 'static)`
|
||||
note: required by an implicit `Sized` bound in `Bar`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:21:12
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:12
|
||||
|
|
||||
LL | struct Bar<T>(T);
|
||||
| ^ required by the implicit `Sized` requirement on this type parameter in `Bar`
|
||||
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:21:12
|
||||
--> $DIR/unsizing-wfcheck-issue-126272.rs:20:12
|
||||
|
|
||||
LL | struct Bar<T>(T);
|
||||
| ^ - ...if indirection were used here: `Box<T>`
|
||||
| |
|
||||
| this could be changed to `T: ?Sized`...
|
||||
|
||||
error: aborting due to 8 previous errors
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0204, E0277, E0369.
|
||||
For more information about an error, try `rustc --explain E0204`.
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::ConstParamTy_;
|
||||
|
||||
#[derive(Eq, PartialEq)]
|
||||
struct Foo<T>(T);
|
||||
|
||||
trait Other {}
|
||||
|
||||
impl<T> UnsizedConstParamTy for Foo<T> where T: Other + UnsizedConstParamTy {}
|
||||
impl<T> ConstParamTy_ for Foo<T> where T: Other + ConstParamTy_ {}
|
||||
|
||||
fn foo<const N: Foo<u8>>() {}
|
||||
//~^ ERROR `Foo<u8>` must implement `ConstParamTy` to be used as the type of a const generic parameter
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ error[E0741]: `[T; N]` can't be used as a const parameter type
|
|||
LL | struct UsesType<T, const N: usize, const M: [T; N]>(PhantomData<T>);
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: `T` must implement `UnsizedConstParamTy`, but it does not
|
||||
= note: `T` must implement `ConstParamTy_`, but it does not
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
#![feature(adt_const_params, unsized_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::ConstParamTy;
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, UnsizedConstParamTy)]
|
||||
#[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
struct Foo {
|
||||
value: i32,
|
||||
nested: &'static Bar<i32>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, UnsizedConstParamTy)]
|
||||
#[derive(Debug, PartialEq, Eq, ConstParamTy)]
|
||||
struct Bar<T>(T);
|
||||
|
||||
struct Test<const F: Foo>;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ error[E0741]: `&'static (dyn A + 'static)` can't be used as a const parameter ty
|
|||
LL | fn test<const T: &'static dyn A>() {
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `(dyn A + 'static)` must implement `UnsizedConstParamTy`, but it does not
|
||||
= note: `(dyn A + 'static)` must implement `ConstParamTy_`, but it does not
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,22 @@
|
|||
error[E0741]: `&'static str` can't be used as a const parameter type
|
||||
--> $DIR/slice-const-param-mismatch.rs:8:29
|
||||
error[E0658]: use of unstable library feature `unsized_const_params`
|
||||
--> $DIR/slice-const-param-mismatch.rs:8:20
|
||||
|
|
||||
LL | struct ConstString<const T: &'static str>;
|
||||
| ^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add `#![feature(unsized_const_params)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= note: required for `&'static str` to implement `ConstParamTy_`
|
||||
|
||||
error[E0741]: `&'static [u8]` can't be used as a const parameter type
|
||||
--> $DIR/slice-const-param-mismatch.rs:11:28
|
||||
error[E0658]: use of unstable library feature `unsized_const_params`
|
||||
--> $DIR/slice-const-param-mismatch.rs:11:19
|
||||
|
|
||||
LL | struct ConstBytes<const T: &'static [u8]>;
|
||||
| ^^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add `#![feature(unsized_const_params)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= note: required for `&'static [u8]` to implement `ConstParamTy_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/slice-const-param-mismatch.rs:17:35
|
||||
|
|
@ -45,5 +53,5 @@ LL | let _: ConstBytes<b"AAA"> = ConstBytes::<b"BBB">;
|
|||
|
||||
error: aborting due to 5 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0308, E0741.
|
||||
Some errors have detailed explanations: E0308, E0658.
|
||||
For more information about an error, try `rustc --explain E0308`.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ pub fn function_with_bytes<const BYTES: &'static [u8]>() -> &'static [u8] {
|
|||
}
|
||||
|
||||
// Also check the codepaths for custom DST
|
||||
#[derive(std::marker::UnsizedConstParamTy, PartialEq, Eq)]
|
||||
#[derive(std::marker::ConstParamTy, PartialEq, Eq)]
|
||||
struct MyStr(str);
|
||||
|
||||
fn function_with_my_str<const S: &'static MyStr>() -> &'static MyStr {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,13 @@
|
|||
error[E0741]: `&'static ()` can't be used as a const parameter type
|
||||
--> $DIR/transmute-const-param-static-reference.rs:9:23
|
||||
error[E0658]: use of unstable library feature `unsized_const_params`
|
||||
--> $DIR/transmute-const-param-static-reference.rs:9:14
|
||||
|
|
||||
LL | struct Const<const P: &'static ()>;
|
||||
| ^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add `#![feature(unsized_const_params)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= note: required for `&'static ()` to implement `ConstParamTy_`
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0741`.
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
struct Const<const P: &'static ()>;
|
||||
//[min]~^ ERROR `&'static ()` is forbidden as the type of a const generic parameter
|
||||
//[adt_const_params]~^^ ERROR `&'static ()` can't be used as a const parameter type
|
||||
//[adt_const_params]~^^ ERROR use of unstable library feature `unsized_const_params`
|
||||
|
||||
fn main() {
|
||||
const A: &'static () = unsafe { std::mem::transmute(10 as *const ()) };
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
//@ check-pass
|
||||
//@ compile-flags: -Csymbol-mangling-version=v0
|
||||
#![allow(incomplete_features)]
|
||||
#![feature(unsized_const_params)]
|
||||
#![feature(adt_const_params, unsized_const_params)]
|
||||
|
||||
// Regression test for #116303
|
||||
|
||||
#[derive(PartialEq, Eq)]
|
||||
struct MyStr(str);
|
||||
impl std::marker::UnsizedConstParamTy for MyStr {}
|
||||
impl std::marker::ConstParamTy_ for MyStr {}
|
||||
|
||||
fn function_with_my_str<const S: &'static MyStr>() -> &'static MyStr {
|
||||
S
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
struct Foo<const N: [u8]>;
|
||||
//~^ ERROR: `[u8]` is forbidden as the type of a const generic parameter
|
||||
//~| HELP: add `#![feature(adt_const_params)]` to the crate
|
||||
//~| HELP: add `#![feature(unsized_const_params)]` to the crate
|
||||
#![feature(adt_const_params)]
|
||||
|
||||
struct Bar(u8);
|
||||
|
||||
struct Foo<const N: Bar>;
|
||||
//~^ ERROR: `Bar` must implement `ConstParamTy` to be used as the type of a const generic parameter
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,15 @@
|
|||
error: `[u8]` is forbidden as the type of a const generic parameter
|
||||
--> $DIR/feature-gate-unsized-const-params.rs:1:21
|
||||
error[E0741]: `Bar` must implement `ConstParamTy` to be used as the type of a const generic parameter
|
||||
--> $DIR/feature-gate-unsized-const-params.rs:5:21
|
||||
|
|
||||
LL | struct Foo<const N: [u8]>;
|
||||
| ^^^^
|
||||
LL | struct Foo<const N: Bar>;
|
||||
| ^^^
|
||||
|
|
||||
= note: the only supported types are integers, `bool`, and `char`
|
||||
help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types
|
||||
help: add `#[derive(ConstParamTy, PartialEq, Eq)]` to the struct
|
||||
|
|
||||
LL + #![feature(adt_const_params)]
|
||||
|
|
||||
help: add `#![feature(unsized_const_params)]` to the crate attributes to enable references to implement the `ConstParamTy` trait
|
||||
|
|
||||
LL + #![feature(unsized_const_params)]
|
||||
LL - struct Bar(u8);
|
||||
LL + #[derive(ConstParamTy, PartialEq, Eq)]
|
||||
|
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0741`.
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ mod assert {
|
|||
where
|
||||
Dst: TransmuteFrom<Src>,
|
||||
//~^ ERROR: use of unstable library feature `transmutability`
|
||||
//~^^ ERROR: use of unstable library feature `transmutability`
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0412]: cannot find type `Subset` in this scope
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:34:41
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:35:41
|
||||
|
|
||||
LL | assert::is_transmutable::<Superset, Subset>();
|
||||
| ^^^^^^ not found in this scope
|
||||
|
|
@ -10,7 +10,7 @@ LL | fn test<Subset>() {
|
|||
| ++++++++
|
||||
|
||||
error[E0517]: attribute should be applied to a struct or union
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:21:11
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:22:11
|
||||
|
|
||||
LL | #[repr(C, packed(2))]
|
||||
| ^^^^^^^^^
|
||||
|
|
@ -50,8 +50,19 @@ LL | Dst: TransmuteFrom<Src>,
|
|||
= help: add `#![feature(transmutability)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0658]: use of unstable library feature `transmutability`
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:10:14
|
||||
|
|
||||
LL | Dst: TransmuteFrom<Src>,
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add `#![feature(transmutability)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
note: required by a bound in `TransmuteFrom`
|
||||
--> $SRC_DIR/core/src/mem/transmutability.rs:LL:COL
|
||||
|
||||
error[E0740]: field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be used in a union
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:29:9
|
||||
--> $DIR/thaw-transmute-invalid-enum.rs:30:9
|
||||
|
|
||||
LL | a: Ox00,
|
||||
| ^^^^^^^
|
||||
|
|
@ -62,7 +73,7 @@ help: wrap the field type in `ManuallyDrop<...>`
|
|||
LL | a: std::mem::ManuallyDrop<Ox00>,
|
||||
| +++++++++++++++++++++++ +
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0412, E0517, E0658, E0740.
|
||||
For more information about an error, try `rustc --explain E0412`.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#![feature(adt_const_params, unsized_const_params, decl_macro, rustc_attrs)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::marker::UnsizedConstParamTy;
|
||||
use std::marker::ConstParamTy;
|
||||
|
||||
pub struct RefByte<const RB: &'static u8>;
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ pub struct TupleByteBool<const TBB: (u8, bool)>;
|
|||
//~| ERROR demangling-alt(<c::TupleByteBool<{(1, false)}>>)
|
||||
impl TupleByteBool<{ (1, false) }> {}
|
||||
|
||||
#[derive(PartialEq, Eq, UnsizedConstParamTy)]
|
||||
#[derive(PartialEq, Eq, ConstParamTy)]
|
||||
pub enum MyOption<T> {
|
||||
Some(T),
|
||||
None,
|
||||
|
|
@ -66,7 +66,7 @@ impl OptionUsize<{ MyOption::None }> {}
|
|||
//~| ERROR demangling-alt(<c::OptionUsize<{c::MyOption::<usize>::Some(0)}>>)
|
||||
impl OptionUsize<{ MyOption::Some(0) }> {}
|
||||
|
||||
#[derive(PartialEq, Eq, UnsizedConstParamTy)]
|
||||
#[derive(PartialEq, Eq, ConstParamTy)]
|
||||
pub struct Foo {
|
||||
s: &'static str,
|
||||
ch: char,
|
||||
|
|
@ -83,7 +83,7 @@ impl Foo_<{ Foo { s: "abc", ch: 'x', slice: &[1, 2, 3] } }> {}
|
|||
// NOTE(eddyb) this tests specifically the use of disambiguators in field names,
|
||||
// using macros 2.0 hygiene to create a `struct` with conflicting field names.
|
||||
macro duplicate_field_name_test($x:ident) {
|
||||
#[derive(PartialEq, Eq, UnsizedConstParamTy)]
|
||||
#[derive(PartialEq, Eq, ConstParamTy)]
|
||||
pub struct Bar {
|
||||
$x: u8,
|
||||
x: u16,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue