diff options
-rw-r--r-- | lib/core/typeinfo.nim | 12 | ||||
-rw-r--r-- | lib/pure/marshal.nim | 2 | ||||
-rw-r--r-- | todo.txt | 1 |
3 files changed, 11 insertions, 4 deletions
diff --git a/lib/core/typeinfo.nim b/lib/core/typeinfo.nim index 6f8081b5f..4ce65ae91 100644 --- a/lib/core/typeinfo.nim +++ b/lib/core/typeinfo.nim @@ -379,7 +379,7 @@ proc getBiggestInt*(x: TAny): biggestInt = of tyInt8: result = biggestInt(cast[ptr int8](x.value)[]) of tyInt16: result = biggestInt(cast[ptr int16](x.value)[]) of tyInt32: result = biggestInt(cast[ptr int32](x.value)[]) - of tyInt64: result = biggestInt(cast[ptr int64](x.value)[]) + of tyInt64, tyUInt64: result = biggestInt(cast[ptr int64](x.value)[]) of tyBool: result = biggestInt(cast[ptr bool](x.value)[]) of tyChar: result = biggestInt(cast[ptr char](x.value)[]) of tyEnum, tySet: @@ -389,6 +389,10 @@ proc getBiggestInt*(x: TAny): biggestInt = of 4: result = biggestInt(cast[ptr int32](x.value)[]) of 8: result = biggestInt(cast[ptr int64](x.value)[]) else: assert false + of tyUInt: result = biggestInt(cast[ptr uint](x.value)[]) + of tyUInt8: result = biggestInt(cast[ptr uint8](x.value)[]) + of tyUInt16: result = biggestInt(cast[ptr uint16](x.value)[]) + of tyUInt32: result = biggestInt(cast[ptr uint32](x.value)[]) else: assert false proc setBiggestInt*(x: TAny, y: biggestInt) = @@ -400,7 +404,7 @@ proc setBiggestInt*(x: TAny, y: biggestInt) = of tyInt8: cast[ptr int8](x.value)[] = int8(y) of tyInt16: cast[ptr int16](x.value)[] = int16(y) of tyInt32: cast[ptr int32](x.value)[] = int32(y) - of tyInt64: cast[ptr int64](x.value)[] = int64(y) + of tyInt64, tyUInt64: cast[ptr int64](x.value)[] = int64(y) of tyBool: cast[ptr bool](x.value)[] = y != 0 of tyChar: cast[ptr char](x.value)[] = chr(y.int) of tyEnum, tySet: @@ -410,6 +414,10 @@ proc setBiggestInt*(x: TAny, y: biggestInt) = of 4: cast[ptr int32](x.value)[] = int32(y) of 8: cast[ptr int64](x.value)[] = y else: assert false + of tyUInt: cast[ptr uint](x.value)[] = uint(y) + of tyUInt8: cast[ptr uint8](x.value)[] = uint8(y) + of tyUInt16: cast[ptr uint16](x.value)[] = uint16(y) + of tyUInt32: cast[ptr uint32](x.value)[] = uint32(y) else: assert false proc getChar*(x: TAny): char = diff --git a/lib/pure/marshal.nim b/lib/pure/marshal.nim index f52b554cc..789f6ad76 100644 --- a/lib/pure/marshal.nim +++ b/lib/pure/marshal.nim @@ -252,7 +252,7 @@ when isMainModule: ["test", "1", "2", "3", "4"], ["test", "1", "2", "3", "4"], ["test", "1", "2", "3", "4"]] testit(x) - var test2: tuple[name: string, s: int] = ("tuple test", 56) + var test2: tuple[name: string, s: uint] = ("tuple test", 56u) testit(test2) type diff --git a/todo.txt b/todo.txt index 7f00d8172..48e35b903 100644 --- a/todo.txt +++ b/todo.txt @@ -16,7 +16,6 @@ Bugs ==== - simple closure iterator doesn't work -- marshal doesn't support unsigned types - sfAnon is not respected in renderer - docgen: sometimes effects are listed twice - 'result' is not properly cleaned for NRVO --> use uninit checking instead |