fixes #2287
This commit is contained in:
parent
970e98718d
commit
5a21892da0
6 changed files with 345 additions and 280 deletions
41
tests/parallel/tsimple_array_checks.nim
Normal file
41
tests/parallel/tsimple_array_checks.nim
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# bug #2287
|
||||
|
||||
import threadPool
|
||||
|
||||
# If `nums` is an array instead of seq,
|
||||
# NONE of the iteration ways below work (including high / len-1)
|
||||
let nums = @[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
|
||||
proc log(n:int) =
|
||||
echo n
|
||||
|
||||
proc main =
|
||||
parallel:
|
||||
for n in nums: # Error: cannot prove: i <= len(nums) + -1
|
||||
spawn log(n)
|
||||
#for i in 0 .. <nums.len: # Error: cannot prove: i <= len(nums) + -1
|
||||
#for i in 0 .. nums.len-1: # WORKS!
|
||||
#for i in 0 .. <nums.len: # WORKS!
|
||||
# spawn log(nums[i])
|
||||
|
||||
# Array needs explicit size to work, probably related to issue #2287
|
||||
#const a: array[0..5, int] = [1,2,3,4,5,6]
|
||||
|
||||
#const a = [1,2,3,4,5,6] # Doesn't work
|
||||
const a = @[1,2,3,4,5,6] # Doesn't work
|
||||
proc f(n: int) = echo "Hello ", n
|
||||
|
||||
proc maino =
|
||||
parallel:
|
||||
# while loop doesn't work:
|
||||
var i = 0
|
||||
while i < a.high:
|
||||
#for i in countup(0, a.high-1, 2):
|
||||
spawn f(a[i])
|
||||
spawn f(a[i+1])
|
||||
i += 2
|
||||
|
||||
maino() # Doesn't work outside a proc
|
||||
|
||||
when isMainModule:
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue