summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semexprs.nim2
-rw-r--r--tests/misc/tunsignedconv.nim5
2 files changed, 6 insertions, 1 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index a479327be..cc8854577 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -522,7 +522,7 @@ proc changeType(c: PContext; n: PNode, newType: PType, check: bool) =
           a.add m
           changeType(m, tup[i], check)
   of nkCharLit..nkUInt64Lit:
-    if check and n.kind != nkUInt64Lit:
+    if check and n.kind != nkUInt64Lit and not sameType(n.typ, newType):
       let value = n.intVal
       if value < firstOrd(c.config, newType) or value > lastOrd(c.config, newType):
         localError(c.config, n.info, "cannot convert " & $value &
diff --git a/tests/misc/tunsignedconv.nim b/tests/misc/tunsignedconv.nim
index af334dd19..085d13aca 100644
--- a/tests/misc/tunsignedconv.nim
+++ b/tests/misc/tunsignedconv.nim
@@ -55,3 +55,8 @@ const x0 = fun()
 echo typeof(x0)
 
 discard $x0
+
+# bug #13671
+
+const x1 = cast[uint](-1)
+discard $(x1,)