diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 38c440f106..5ea316da85 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -508,7 +508,7 @@ proc changeType(c: PContext; n: PNode, newType: PType, check: bool) = addSon(a, m) changeType(m, tup.sons[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 af334dd190..085d13aca2 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,)