mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
42 lines
977 B
Nim
42 lines
977 B
Nim
# 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()
|