about summary refs log tree commit diff
path: root/src/test/codegen/src-hash-algorithm
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-05-29 08:45:15 +0000
committerbors <bors@rust-lang.org>2022-05-29 08:45:15 +0000
commitf94fa62d69faf5bd63b3772d3ec4f0c76cf2db57 (patch)
tree8981372169c9dfa5dcc6c6025af06d7e2a282d10 /src/test/codegen/src-hash-algorithm
parent6c9fc4fec2193ebfa7ed7eb163b6eea925b56f7b (diff)
parentbe2fa2b31b9e6b01ed96f41061a231ea45a54216 (diff)
downloadrust-f94fa62d69faf5bd63b3772d3ec4f0c76cf2db57.tar.gz
rust-f94fa62d69faf5bd63b3772d3ec4f0c76cf2db57.zip
Auto merge of #12409 - lowr:fix/usize-overflow, r=Veykril
fix overflow during type inference for tuple struct patterns

The following code causes integer overflow during type inference for (malformed) tuple struct patterns.

```rust
struct S(usize);
let S(.., a, b) = S(1);
```

It has been panicking only in debug builds, and working in a way in release builds but it was inconsistent with type inference for tuple patterns:

```rust
struct S(usize);
let S(.., a, b) = S(1); // a -> unknown, b -> usize
let (.., a, b) = (1,);  // a -> usize, b -> unknown
```

With this PR, the overflow no longer happens by utilizing `saturating_sub()` like in other places and type inference for tuple struct patterns is in line with that for tuple patterns.
Diffstat (limited to 'src/test/codegen/src-hash-algorithm')
0 files changed, 0 insertions, 0 deletions