diff options
-rw-r--r-- | compiler/semexprs.nim | 2 | ||||
-rw-r--r-- | tests/misc/tunsignedconv.nim | 5 |
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,) |