summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/vmgen.nim3
-rw-r--r--tests/casestmt/tcasestm.nim19
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: