parent
be6e8916fa
commit
aa185c0e9b
2 changed files with 17 additions and 3 deletions
|
|
@ -429,13 +429,13 @@ proc opConv(c: PCtx; dest: var TFullReg, src: TFullReg, desttyp, srctyp: PType):
|
||||||
return true
|
return true
|
||||||
of tyUInt..tyUInt64:
|
of tyUInt..tyUInt64:
|
||||||
dest.ensureKind(rkInt)
|
dest.ensureKind(rkInt)
|
||||||
case skipTypes(srctyp, abstractRange).kind
|
let styp = srctyp.skipTypes(abstractRange) # skip distinct types(dest type could do this too if needed)
|
||||||
|
case styp.kind
|
||||||
of tyFloat..tyFloat64:
|
of tyFloat..tyFloat64:
|
||||||
dest.intVal = int(src.floatVal)
|
dest.intVal = int(src.floatVal)
|
||||||
else:
|
else:
|
||||||
let srcDist = (sizeof(src.intVal) - srctyp.size) * 8
|
let srcDist = (sizeof(src.intVal) - styp.size) * 8
|
||||||
let destDist = (sizeof(dest.intVal) - desttyp.size) * 8
|
let destDist = (sizeof(dest.intVal) - desttyp.size) * 8
|
||||||
|
|
||||||
var value = cast[BiggestUInt](src.intVal)
|
var value = cast[BiggestUInt](src.intVal)
|
||||||
value = (value shl srcDist) shr srcDist
|
value = (value shl srcDist) shr srcDist
|
||||||
value = (value shl destDist) shr destDist
|
value = (value shl destDist) shr destDist
|
||||||
|
|
|
||||||
|
|
@ -65,3 +65,17 @@ block t9322:
|
||||||
proc mystr(s: string) =
|
proc mystr(s: string) =
|
||||||
echo s
|
echo s
|
||||||
mystr($Fix("apr"))
|
mystr($Fix("apr"))
|
||||||
|
|
||||||
|
|
||||||
|
block: # bug #13517
|
||||||
|
type MyUint64 = distinct uint64
|
||||||
|
|
||||||
|
proc `==`(a: MyUint64, b: uint64): bool = uint64(a) == b
|
||||||
|
|
||||||
|
block:
|
||||||
|
doAssert MyUint64.high is MyUint64
|
||||||
|
doAssert MyUint64.high == 18446744073709551615'u64
|
||||||
|
|
||||||
|
static:
|
||||||
|
doAssert MyUint64.high is MyUint64
|
||||||
|
doAssert MyUint64.high == 18446744073709551615'u64
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue