mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-01 02:42:05 +00:00
fix regression with uint constant losing abstract type (#24105)
fixes #24104, refs #23955
The line `result.typ = dstTyp` added in #23955 changes the type of
`result`, which was the type of `n` due to the argument passed to
`newIntNodeT`, to the abstract type skipped `dstTyp`. The line is
removed to just keep the type as abstract.
(cherry picked from commit 6d362e0ffe)
This commit is contained in:
@@ -412,7 +412,6 @@ proc foldConv(n, a: PNode; idgen: IdGenerator; g: ModuleGraph; check = false): P
|
||||
if dstTyp.kind in {tyUInt..tyUInt64}:
|
||||
result = newIntNodeT(maskBytes(val, getSize(g.config, dstTyp)), n, idgen, g)
|
||||
result.transitionIntKind(nkUIntLit)
|
||||
result.typ = dstTyp
|
||||
else:
|
||||
if check: rangeCheck(n, val, g)
|
||||
result = newIntNodeT(val, n, idgen, g)
|
||||
|
||||
@@ -42,3 +42,10 @@ block: # bug #23954
|
||||
doAssert testRT_u8 == 7
|
||||
const testCT_u8 : uint8 = 0x107.uint8
|
||||
doAssert testCT_u8 == 7
|
||||
|
||||
block: # issue #24104
|
||||
type P = distinct uint # uint, uint8, uint16, uint32, uint64
|
||||
let v = 0.P
|
||||
case v
|
||||
of 0.P: discard
|
||||
else: discard
|
||||
|
||||
Reference in New Issue
Block a user