mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 22:09:09 +00:00
Allow any numeric range to become a float
Currently things like `1 / 200` lead to a miscompilation because we type `200` (and as a result, both `1` and the division result) as a ranged number with width >= U8. During mono that forces the number to become an `I64` because our logic was that a ranged number can only become a float if it's at least as wide as an I8. But this is incorrect; as long as the type is wrapped in `Frac` constructor and it's a ranged number (and not a ranged int), it should become a fractional type. ``` » 1 / 200 0.005 : Float * ``` Closes #4047
This commit is contained in:
parent
57681be542
commit
a81d4d4be2
3 changed files with 19 additions and 1 deletions
|
@ -1927,3 +1927,12 @@ fn issue_3669() {
|
|||
"#
|
||||
)
|
||||
}
|
||||
|
||||
#[mono_test]
|
||||
fn num_width_gt_u8_layout_as_float() {
|
||||
indoc!(
|
||||
r#"
|
||||
1 / 200
|
||||
"#
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue