From 49e793e8c4b42a5bc08bc6ed27123389c3bdc353 Mon Sep 17 00:00:00 2001 From: Bung Date: Tue, 1 Nov 2022 12:58:32 +0800 Subject: [PATCH] fix #20272 range of uint64 shows signed upper bound (#20702) --- compiler/types.nim | 5 ++++- tests/misc/t6549.nim | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tests/misc/t6549.nim diff --git a/compiler/types.nim b/compiler/types.nim index b784617697..0ade59fd02 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -450,7 +450,10 @@ proc mutateType(t: PType, iter: TTypeMutator, closure: RootRef): PType = proc valueToString(a: PNode): string = case a.kind - of nkCharLit..nkUInt64Lit: result = $a.intVal + of nkCharLit, nkUIntLit..nkUInt64Lit: + result = $cast[uint64](a.intVal) + of nkIntLit..nkInt64Lit: + result = $a.intVal of nkFloatLit..nkFloat128Lit: result = $a.floatVal of nkStrLit..nkTripleStrLit: result = a.strVal else: result = "" diff --git a/tests/misc/t6549.nim b/tests/misc/t6549.nim new file mode 100644 index 0000000000..1d7393318d --- /dev/null +++ b/tests/misc/t6549.nim @@ -0,0 +1,4 @@ + +const l = $(range[low(uint64) .. high(uint64)]) +const r = "range 0..18446744073709551615(uint64)" +doAssert l == r