about summary refs log tree commit diff
path: root/tests/ui/specialization
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-03-25 09:59:37 +0000
committerbors <bors@rust-lang.org>2024-03-25 09:59:37 +0000
commitdda2372cf3700fcc1207ca39c0d3c6c3e90f519c (patch)
tree3a8285655197695235d6950c7dc5ba86fbd7041b /tests/ui/specialization
parent42198bf562b548015e3eae3926c175c4aabb3a7b (diff)
parent6b24fdf8113d5f422bfaeff7071d8251a13468b1 (diff)
downloadrust-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.stderr5
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