diff options
author | Araq <rumpf_a@web.de> | 2015-02-20 19:39:49 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-02-20 20:01:25 +0100 |
commit | 77406dd59c6e3afc66903227d50ae3b54d4a7540 (patch) | |
tree | dc3788d52a9a81c3d3079a9a3a1609fb16ab1ef5 | |
parent | aef7be2e79831f4cdbd3292a7c5060e403bbff5e (diff) | |
download | Nim-77406dd59c6e3afc66903227d50ae3b54d4a7540.tar.gz |
fixes #2134
-rw-r--r-- | compiler/semfields.nim | 2 | ||||
-rw-r--r-- | tests/fields/tfields_with_break.nim | 33 |
2 files changed, 34 insertions, 1 deletions
diff --git a/compiler/semfields.nim b/compiler/semfields.nim index 8d01a85d5..e086e73f8 100644 --- a/compiler/semfields.nim +++ b/compiler/semfields.nim @@ -156,7 +156,7 @@ proc semForFields(c: PContext, n: PNode, m: TMagic): PNode = dec(c.p.nestedLoopCounter) # for TR macros this 'while true: ...; break' loop is pretty bad, so # we avoid it now if we can: - if hasSonWith(stmts, nkBreakStmt): + if containsNode(stmts, {nkBreakStmt}): var b = newNodeI(nkBreakStmt, n.info) b.add(ast.emptyNode) stmts.add(b) diff --git a/tests/fields/tfields_with_break.nim b/tests/fields/tfields_with_break.nim new file mode 100644 index 000000000..1f2632692 --- /dev/null +++ b/tests/fields/tfields_with_break.nim @@ -0,0 +1,33 @@ +discard """ + output: '''(one: 1, two: 2, three: 3) +1 +2 +3 +(one: 4, two: 5, three: 6) +4 +(one: 7, two: 8, three: 9) +7 +8 +9''' +""" + +# bug #2134 +type + TestType = object + one: int + two: int + three: int + +var + ab = TestType(one:1, two:2, three:3) + ac = TestType(one:4, two:5, three:6) + ad = TestType(one:7, two:8, three:9) + tstSeq = [ab, ac, ad] + +for tstElement in mitems(tstSeq): + echo tstElement + for tstField in fields(tstElement): + #for tstField in [1,2,4,6]: + echo tstField + if tstField == 4: + break |