diff options
-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 |