diff options
-rw-r--r-- | compiler/vmgen.nim | 3 | ||||
-rw-r--r-- | tests/casestmt/tcasestm.nim | 19 |
2 files changed, 15 insertions, 7 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index bcfaeef23..b8f1ef711 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -251,7 +251,7 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) proc gen(c: PCtx; n: PNode; dest: TRegister; flags: TGenFlags = {}) = var d: TDest = dest gen(c, n, d, flags) - internalAssert d == dest + #internalAssert d == dest # issue #7407 proc gen(c: PCtx; n: PNode; flags: TGenFlags = {}) = var tmp: TDest = -1 @@ -1829,7 +1829,6 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) = unused(n, dest) genReturn(c, n) of nkRaiseStmt: - unused(n, dest) genRaise(c, n) of nkBreakStmt: unused(n, dest) diff --git a/tests/casestmt/tcasestm.nim b/tests/casestmt/tcasestm.nim index b005d8120..4d32d023f 100644 --- a/tests/casestmt/tcasestm.nim +++ b/tests/casestmt/tcasestm.nim @@ -45,15 +45,24 @@ let a = case str1: echo "no good" quit("quiting") -let b = case str2: - of nil, "": raise newException(ValueError, "Invalid boolean") - elif str2[0] == 'Y': true - elif str2[0] == 'N': false - else: "error".quit(2) +proc toBool(s: string): bool = + case s: + of nil, "": raise newException(ValueError, "Invalid boolean") + elif s[0] == 'Y': true + elif s[0] == 'N': false + else: "error".quit(2) + + +let b = "NN".toBool() doAssert(a == true) doAssert(b == false) +static: + #bug #7407 + let bstatic = "N".toBool() + doAssert(bstatic == false) + var bb: bool doassert(not compiles( bb = case str2: |