v/vlib/v/tests/return_in_lock_test.v

47 lines
615 B
V

import time
struct AA {
mut:
b string
}
fn test_return_lock() {
start := time.now()
shared s := AA{'3'}
reader(shared s)
lock s {
assert s.b == '5'
s.b = '4'
}
rlock s {
assert s.b == '4'
}
}
fn reader(shared s AA) {
lock s {
assert s.b == '3'
s.b = '5'
// this test checks if cgen unlocks the mutex here
return
}
}
fn test_multi_return_lock() {
shared s := AA{'3'}
reti, retb := printer2(shared s)
lock s {
assert s.b == '3'
assert reti == 4
assert retb == true
}
}
fn printer2(shared s AA) (int, bool) {
rlock s {
assert s.b == '3'
return 4, true
}
return 5, false
}