checker: fix negative values for unsigned integers (#10976)
parent
6fa8e4269e
commit
7c504920e1
|
@ -3949,6 +3949,14 @@ pub fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) {
|
||||||
left.obj.is_auto_heap = true
|
left.obj.is_auto_heap = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if left_type in ast.unsigned_integer_type_idxs {
|
||||||
|
if right is ast.IntegerLiteral {
|
||||||
|
if right.val[0] == `-` {
|
||||||
|
c.error('Cannot assign negative value to unsigned integer type',
|
||||||
|
right.pos)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ast.GlobalField {
|
ast.GlobalField {
|
||||||
left.obj.typ = left_type
|
left.obj.typ = left_type
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
vlib/v/checker/tests/negative_assign_to_unsigned.vv:3:9: error: Cannot assign negative value to unsigned integer type
|
||||||
|
1 | fn main() {
|
||||||
|
2 | mut u := u32(10)
|
||||||
|
3 | u = -10
|
||||||
|
| ~~~
|
||||||
|
4 | eprintln(u)
|
||||||
|
5 | }
|
|
@ -0,0 +1,5 @@
|
||||||
|
fn main() {
|
||||||
|
mut u := u32(10)
|
||||||
|
u = -10
|
||||||
|
eprintln(u)
|
||||||
|
}
|
Loading…
Reference in New Issue