mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-31 10:22:15 +00:00
@@ -404,6 +404,9 @@ proc genComputedGoto(p: BProc; n: PNode) =
|
||||
localError(p.config, it.info,
|
||||
"case statement must be exhaustive for computed goto"); return
|
||||
casePos = i
|
||||
if enumHasHoles(it.sons[0].typ):
|
||||
localError(p.config, it.info,
|
||||
"case statement cannot work on enums with holes for computed goto"); return
|
||||
let aSize = lengthOrd(p.config, it.sons[0].typ)
|
||||
if aSize > 10_000:
|
||||
localError(p.config, it.info,
|
||||
|
||||
15
tests/casestmt/t7699.nim
Normal file
15
tests/casestmt/t7699.nim
Normal file
@@ -0,0 +1,15 @@
|
||||
discard """
|
||||
line: 13
|
||||
errormsg: "case statement cannot work on enums with holes for computed goto"
|
||||
"""
|
||||
|
||||
type
|
||||
X = enum
|
||||
A = 0, B = 100
|
||||
|
||||
var z = A
|
||||
while true:
|
||||
{.computedGoto.}
|
||||
case z
|
||||
of A: discard
|
||||
of B: discard
|
||||
Reference in New Issue
Block a user