diff options
| author | Stuart Cook <Zalathar@users.noreply.github.com> | 2025-09-01 12:42:26 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-01 12:42:26 +1000 |
| commit | 142ad696982564bbac63594531df0a4983e09218 (patch) | |
| tree | 07cdb71ba33724f9b0811f3da4fd84b2a7bce529 /compiler/rustc_middle/src | |
| parent | 5adc0fe0e2cb100f907bc2a326d64dcfa22bdfef (diff) | |
| parent | ea2daa33c8a61af4518d86d78c742ec8e922c93e (diff) | |
| download | rust-142ad696982564bbac63594531df0a4983e09218.tar.gz rust-142ad696982564bbac63594531df0a4983e09218.zip | |
Rollup merge of #146042 - estebank:issue-83413, r=lcnr
Detect negative literal inferred to unsigned integer
```
error[E0277]: the trait bound `usize: Neg` is not satisfied
--> $DIR/negative-literal-infered-to-unsigned.rs:2:14
|
LL | for x in -5..5 {
| ^^ the trait `Neg` is not implemented for `usize`
|
help: consider specifying an integer type that can be negative
|
LL | for x in -5isize..5 {
| +++++
```
Applying this suggestion will always end up in another E0308 error at the point where the unsigned inference comes from, which should help with understanding what the actual problem is.
Fix rust-lang/rust#83413.
Diffstat (limited to 'compiler/rustc_middle/src')
| -rw-r--r-- | compiler/rustc_middle/src/traits/mod.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/rustc_middle/src/traits/mod.rs b/compiler/rustc_middle/src/traits/mod.rs index 32f91bfba6b..ab8a3142953 100644 --- a/compiler/rustc_middle/src/traits/mod.rs +++ b/compiler/rustc_middle/src/traits/mod.rs @@ -389,10 +389,14 @@ pub enum ObligationCauseCode<'tcx> { /// against. MatchImpl(ObligationCause<'tcx>, DefId), + UnOp { + hir_id: HirId, + }, + BinOp { lhs_hir_id: HirId, - rhs_hir_id: Option<HirId>, - rhs_span: Option<Span>, + rhs_hir_id: HirId, + rhs_span: Span, rhs_is_lit: bool, output_ty: Option<Ty<'tcx>>, }, |
