summary refs log tree commit diff stats
path: root/compiler/semfields.nim
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2022-11-24 14:31:47 +0800
committerGitHub <noreply@github.com>2022-11-24 07:31:47 +0100
commitef2998778138fd0b9a102a1c48c1eacd98361105 (patch)
treea7a6b86bc0e0d2562c731120eb8bb687c77c180a /compiler/semfields.nim
parentd149727f3433e2c9dc1d84b6540a8abf6a864fd2 (diff)
downloadNim-ef2998778138fd0b9a102a1c48c1eacd98361105.tar.gz
An unnamed break in a block now gives an `UnnamedBreak` warning (#20901)
* unnamed break in the block now gives an error

* bootstrap

* fixes

* more fixes

* break with label

* label again

* one moee

* Delete test5.txt

* it now gives a UnnamedBreak warning

* change the URL of bump back to the original one
Diffstat (limited to 'compiler/semfields.nim')
-rw-r--r--compiler/semfields.nim3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/semfields.nim b/compiler/semfields.nim
index 93184c568..36e3b57e7 100644
--- a/compiler/semfields.nim
+++ b/compiler/semfields.nim
@@ -133,6 +133,8 @@ proc semForFields(c: PContext, n: PNode, m: TMagic): PNode =
       typeMismatch(c.config, calli.info, tupleTypeA, tupleTypeB, calli)
 
   inc(c.p.nestedLoopCounter)
+  let oldBreakInLoop = c.p.breakInLoop
+  c.p.breakInLoop = true
   if tupleTypeA.kind == tyTuple:
     var loopBody = n[^1]
     for i in 0..<tupleTypeA.len:
@@ -156,6 +158,7 @@ proc semForFields(c: PContext, n: PNode, m: TMagic): PNode =
       semForObjectFields(fc, t.n, n, stmts)
       if t[0] == nil: break
       t = skipTypes(t[0], skipPtrs)
+  c.p.breakInLoop = oldBreakInLoop
   dec(c.p.nestedLoopCounter)
   # for TR macros this 'while true: ...; break' loop is pretty bad, so
   # we avoid it now if we can: