mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 23:54:19 +00:00
fixes #6753
This commit is contained in:
@@ -531,13 +531,13 @@ proc mulInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
proc divInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
when defined(nimphp):
|
||||
asm """
|
||||
return floor(`a` / `b`);
|
||||
return trunc(`a` / `b`);
|
||||
"""
|
||||
else:
|
||||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 2147483647) `raiseOverflow`();
|
||||
return Math.floor(`a` / `b`);
|
||||
return Math.trunc(`a` / `b`);
|
||||
"""
|
||||
|
||||
proc modInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
@@ -549,7 +549,7 @@ proc modInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 2147483647) `raiseOverflow`();
|
||||
return Math.floor(`a` % `b`);
|
||||
return Math.trunc(`a` % `b`);
|
||||
"""
|
||||
|
||||
proc addInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
@@ -594,13 +594,13 @@ proc mulInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
proc divInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
when defined(nimphp):
|
||||
asm """
|
||||
return floor(`a` / `b`);
|
||||
return trunc(`a` / `b`);
|
||||
"""
|
||||
else:
|
||||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 9223372036854775807) `raiseOverflow`();
|
||||
return Math.floor(`a` / `b`);
|
||||
return Math.trunc(`a` / `b`);
|
||||
"""
|
||||
|
||||
proc modInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
@@ -612,7 +612,7 @@ proc modInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 9223372036854775807) `raiseOverflow`();
|
||||
return Math.floor(`a` % `b`);
|
||||
return Math.trunc(`a` % `b`);
|
||||
"""
|
||||
|
||||
proc negInt(a: int): int {.compilerproc.} =
|
||||
|
||||
@@ -2,7 +2,9 @@ discard """
|
||||
output: '''foo
|
||||
js 3.14
|
||||
7
|
||||
1'''
|
||||
1
|
||||
-21550
|
||||
-21550'''
|
||||
"""
|
||||
|
||||
# This file tests the JavaScript generator
|
||||
@@ -40,3 +42,14 @@ procThatRefersToConst() # Call bar before it is defined
|
||||
proc procThatRefersToConst() =
|
||||
var i = 0 # Use a var index, otherwise nim will constfold foo[0]
|
||||
echo someConst[i] # JS exception here: foo is still not initialized (undefined)
|
||||
|
||||
# bug #6753
|
||||
let x = -1861876800
|
||||
const y = 86400
|
||||
echo (x - (y - 1)) div y # Now gives `-21550`
|
||||
|
||||
proc foo09() =
|
||||
let x = -1861876800
|
||||
const y = 86400
|
||||
echo (x - (y - 1)) div y # Still gives `-21551`
|
||||
foo09()
|
||||
|
||||
Reference in New Issue
Block a user