diff options
| author | bors <bors@rust-lang.org> | 2024-03-25 09:59:37 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-03-25 09:59:37 +0000 |
| commit | dda2372cf3700fcc1207ca39c0d3c6c3e90f519c (patch) | |
| tree | 3a8285655197695235d6950c7dc5ba86fbd7041b /tests/ui/specialization | |
| parent | 42198bf562b548015e3eae3926c175c4aabb3a7b (diff) | |
| parent | 6b24fdf8113d5f422bfaeff7071d8251a13468b1 (diff) | |
| download | rust-dda2372cf3700fcc1207ca39c0d3c6c3e90f519c.tar.gz rust-dda2372cf3700fcc1207ca39c0d3c6c3e90f519c.zip | |
Auto merge of #122802 - estebank:unconstrained-generic-const, r=Nadrieril
Provide structured suggestion for unconstrained generic constant
```
error: unconstrained generic constant
--> $DIR/const-argument-if-length.rs:18:10
|
LL | pad: [u8; is_zst::<T>()],
| ^^^^^^^^^^^^^^^^^^^
|
help: try adding a `where` bound
|
LL | pub struct AtLeastByte<T: ?Sized> where [(); is_zst::<T>()]: {
| ++++++++++++++++++++++++++
```
Detect when the constant expression isn't `usize` and suggest casting:
```
error: unconstrained generic constant
--> f300.rs:6:10
|
6 | bb::<{!N}>();
| ^^^^
-Ztrack-diagnostics: created at compiler/rustc_trait_selection/src/traits/error_reporting/type_err_ctxt_ext.rs:3539:36
|
help: try adding a `where` bound
|
5 | fn b<const N: bool>() where [(); {!N} as usize]: {
| ++++++++++++++++++++++++++
```
Fix #122395.
Diffstat (limited to 'tests/ui/specialization')
| -rw-r--r-- | tests/ui/specialization/issue-51892.stderr | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/tests/ui/specialization/issue-51892.stderr b/tests/ui/specialization/issue-51892.stderr index 9553a04c8f6..b1cabc0ac0e 100644 --- a/tests/ui/specialization/issue-51892.stderr +++ b/tests/ui/specialization/issue-51892.stderr @@ -4,7 +4,10 @@ error: unconstrained generic constant LL | type Type = [u8; std::mem::size_of::<<T as Trait>::Type>()]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | - = help: try adding a `where` bound using this expression: `where [(); std::mem::size_of::<<T as Trait>::Type>()]:` +help: try adding a `where` bound + | +LL | type Type = [u8; std::mem::size_of::<<T as Trait>::Type>()] where [(); std::mem::size_of::<<T as Trait>::Type>()]:; + | ++++++++++++++++++++++++++++++++++++++++++++++++++++++ error: aborting due to 1 previous error |
