fixes a collect() bug reported on the forum (#15156) [backport:1.2]

This commit is contained in:
Andreas Rumpf 2020-08-04 12:45:15 +02:00 • committed by GitHub
commit 64aec6eb85
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 2 deletions

View file

@ -159,7 +159,7 @@ proc semIf(c: PContext, n: PNode; flags: TExprFlags): PNode =
if it.len == 2: if it.len == 2:
openScope(c) openScope(c)
it[0] = forceBool(c, semExprWithType(c, it[0])) it[0] = forceBool(c, semExprWithType(c, it[0]))
it[1] = semExprBranch(c, it[1]) it[1] = semExprBranch(c, it[1], flags)
typ = commonType(typ, it[1]) typ = commonType(typ, it[1])
closeScope(c) closeScope(c)
elif it.len == 1: elif it.len == 1:

View file

@ -11,7 +11,7 @@
## Nim's write tracking and also for the cursor inference. ## Nim's write tracking and also for the cursor inference.
## The algorithm is a reinvention / variation of Steensgaard's ## The algorithm is a reinvention / variation of Steensgaard's
## algorithm. ## algorithm.
## The used algorithm is "union find" with path compression. ## The used data structure is "union find" with path compression.
import ast, types, lineinfos, options, msgs, renderer import ast, types, lineinfos, options, msgs, renderer
from trees import getMagic from trees import getMagic

View file

@ -394,3 +394,13 @@ when isMainModule:
of "bird": "word" of "bird": "word"
else: d else: d
assert z == @["word", "word"] assert z == @["word", "word"]
proc tforum =
let ans = collect(newSeq):
for y in 0..10:
if y mod 5 == 2:
for x in 0..y:
x
tforum()