
Fixes #109543. When checking paths in HIR typeck, we don't want to check for const predicates since all we want might just be a function pointer. Therefore we move this to MIR constck and check that bounds are met during MIR constck.
50 lines
2.5 KiB
Text
50 lines
2.5 KiB
Text
error[E0277]: the trait bound `NonTrivialDrop: ~const A` is not satisfied
|
|
--> $DIR/const-drop-fail-2.rs:31:23
|
|
|
|
|
LL | const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>(ConstDropImplWithBounds(PhantomData));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `~const A` is not implemented for `NonTrivialDrop`
|
|
|
|
|
note: the trait `A` is implemented for `NonTrivialDrop`, but that implementation is not `const`
|
|
--> $DIR/const-drop-fail-2.rs:31:23
|
|
|
|
|
LL | const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>(ConstDropImplWithBounds(PhantomData));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
note: required by a bound in `ConstDropImplWithBounds`
|
|
--> $DIR/const-drop-fail-2.rs:21:35
|
|
|
|
|
LL | struct ConstDropImplWithBounds<T: ~const A>(PhantomData<T>);
|
|
| ^^^^^^^^ required by this bound in `ConstDropImplWithBounds`
|
|
|
|
error[E0277]: the trait bound `NonTrivialDrop: ~const A` is not satisfied
|
|
--> $DIR/const-drop-fail-2.rs:31:64
|
|
|
|
|
LL | const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>(ConstDropImplWithBounds(PhantomData));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `~const A` is not implemented for `NonTrivialDrop`
|
|
|
|
|
note: the trait `A` is implemented for `NonTrivialDrop`, but that implementation is not `const`
|
|
--> $DIR/const-drop-fail-2.rs:31:64
|
|
|
|
|
LL | const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>(ConstDropImplWithBounds(PhantomData));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
note: required by a bound in `ConstDropImplWithBounds`
|
|
--> $DIR/const-drop-fail-2.rs:21:35
|
|
|
|
|
LL | struct ConstDropImplWithBounds<T: ~const A>(PhantomData<T>);
|
|
| ^^^^^^^^ required by this bound in `ConstDropImplWithBounds`
|
|
|
|
error[E0367]: `Drop` impl requires `T: ~const A` but the struct it is implemented for does not
|
|
--> $DIR/const-drop-fail-2.rs:37:9
|
|
|
|
|
LL | impl<T: ~const A> const Drop for ConstDropImplWithNonConstBounds<T> {
|
|
| ^^^^^^^^
|
|
|
|
|
note: the implementor must specify the same requirement
|
|
--> $DIR/const-drop-fail-2.rs:35:1
|
|
|
|
|
LL | struct ConstDropImplWithNonConstBounds<T: A>(PhantomData<T>);
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
Some errors have detailed explanations: E0277, E0367.
|
|
For more information about an error, try `rustc --explain E0277`.
|