1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

cgen: optimize array op assign (#7178)

This commit is contained in:
Uwe Krüger
2020-12-07 17:13:19 +01:00
committed by GitHub
parent 91e18b039c
commit fd689f5fdd
2 changed files with 77 additions and 50 deletions

View File

@ -796,6 +796,57 @@ fn test_in_struct() {
assert baz.bar[0] == 3
}
[direct_array_access]
fn test_direct_modification() {
mut foo := [2, 0, 5]
foo[1] = 3
foo[0] *= 7
foo[1]--
foo[2] -= 2
assert foo[0] == 14
assert foo[1] == 2
assert foo[2] == 3
}
fn test_shared_modification() {
shared foo := &[2, 0, 5]
lock foo {
unsafe {
foo[1] = 3
foo[0] *= 7
foo[1]--
foo[2] -= 2
}
}
rlock foo {
unsafe {
assert foo[0] == 14
assert foo[1] == 2
assert foo[2] == 3
}
}
}
[direct_array_access]
fn test_shared_direct_modification() {
shared foo := &[2, 0, 5]
lock foo {
unsafe {
foo[1] = 3
foo[0] *= 7
foo[1]--
foo[2] -= 2
}
}
rlock foo {
unsafe {
assert foo[0] == 14
assert foo[1] == 2
assert foo[2] == 3
}
}
}
fn test_bools() {
println('test b')
mut a := [true, false]