This commit is contained in:
Araq 2015-03-12 00:27:49 +01:00
commit 5a21892da0
6 changed files with 345 additions and 280 deletions

View 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()