This commit is contained in:
Araq 2014-11-20 21:39:08 +01:00
commit 57689037c5
3 changed files with 14 additions and 5 deletions

View file

@ -502,7 +502,7 @@ proc foldConv*(n, a: PNode; check = false): PNode =
of tyInt..tyInt64: of tyInt..tyInt64:
case skipTypes(a.typ, abstractRange).kind case skipTypes(a.typ, abstractRange).kind
of tyFloat..tyFloat64: of tyFloat..tyFloat64:
result = newIntNodeT(system.toInt(getFloat(a)), n) result = newIntNodeT(int(getFloat(a)), n)
of tyChar: result = newIntNodeT(getOrdValue(a), n) of tyChar: result = newIntNodeT(getOrdValue(a), n)
else: else:
result = a result = a

View file

@ -328,7 +328,7 @@ proc opConv*(dest: var TFullReg, src: TFullReg, desttyp, srctyp: PType): bool =
myreset(dest); dest.kind = rkInt myreset(dest); dest.kind = rkInt
case skipTypes(srctyp, abstractRange).kind case skipTypes(srctyp, abstractRange).kind
of tyFloat..tyFloat64: of tyFloat..tyFloat64:
dest.intVal = system.toInt(src.floatVal) dest.intVal = int(src.floatVal)
else: else:
dest.intVal = src.intVal dest.intVal = src.intVal
if dest.intVal < firstOrd(desttyp) or dest.intVal > lastOrd(desttyp): if dest.intVal < firstOrd(desttyp) or dest.intVal > lastOrd(desttyp):
@ -338,7 +338,7 @@ proc opConv*(dest: var TFullReg, src: TFullReg, desttyp, srctyp: PType): bool =
myreset(dest); dest.kind = rkInt myreset(dest); dest.kind = rkInt
case skipTypes(srctyp, abstractRange).kind case skipTypes(srctyp, abstractRange).kind
of tyFloat..tyFloat64: of tyFloat..tyFloat64:
dest.intVal = system.toInt(src.floatVal) dest.intVal = int(src.floatVal)
else: else:
dest.intVal = src.intVal and ((1 shl (desttyp.size*8))-1) dest.intVal = src.intVal and ((1 shl (desttyp.size*8))-1)
of tyFloat..tyFloat64: of tyFloat..tyFloat64:

View file

@ -1,6 +1,8 @@
discard """ discard """
file: "tints.nim" output: '''
output: "Success" 0 0
0 0
Success'''
""" """
# Test the different integer operations # Test the different integer operations
@ -41,5 +43,12 @@ test(`shl`, 0xff'i8, 0x4'i8, 0xf0'i8)
test(`shl`, 0xffffffff'i64, 0x4'i64, 0xffffffff0'i64) test(`shl`, 0xffffffff'i64, 0x4'i64, 0xffffffff0'i64)
test(`shl`, 0xffffffff'i32, 0x4'i32, 0xfffffff0'i32) test(`shl`, 0xffffffff'i32, 0x4'i32, 0xfffffff0'i32)
# bug #916
proc unc(a: float): float =
return a
echo int(unc(0.5)), " ", int(unc(-0.5))
echo int(0.5), " ", int(-0.5)
echo("Success") #OUT Success echo("Success") #OUT Success