From a3a87cdb298d7166846133bca5d56f055717474c Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Wed, 29 Jul 2020 11:11:58 +0200 Subject: [PATCH] fixes #14616 [backport:1.2] (#15109) --- compiler/semmagic.nim | 4 ++++ tests/misc/tunsignedconv.nim | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim index f991b4ac6..5cd7b28b0 100644 --- a/compiler/semmagic.nim +++ b/compiler/semmagic.nim @@ -564,5 +564,9 @@ proc magicsAfterOverloadResolution(c: PContext, n: PNode, if not checkIsolate(n[1]): localError(c.config, n.info, "expression cannot be isolated: " & $n[1]) result = n + of mPred: + if n[1].typ.skipTypes(abstractInst).kind in {tyUInt..tyUInt64}: + n[0].sym.magic = mSubU + result = n else: result = n diff --git a/tests/misc/tunsignedconv.nim b/tests/misc/tunsignedconv.nim index 0e5fc43db..07fc03e59 100644 --- a/tests/misc/tunsignedconv.nim +++ b/tests/misc/tunsignedconv.nim @@ -59,3 +59,13 @@ discard $(x1,) # bug #13698 let n: csize = 1 # xxx should that be csize_t or is that essential here? doAssert $n.int32 == "1" + +# bug #14616 + +let limit = 1'u64 + +let rangeVar = 0'u64 ..< limit + +doAssert repr(rangeVar) == """[a = 0, +b = 0] +"""