summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--changelog.md8
-rw-r--r--lib/system/jssys.nim6
2 files changed, 10 insertions, 4 deletions
diff --git a/changelog.md b/changelog.md
index b645bc5c7..f7f92ad3c 100644
--- a/changelog.md
+++ b/changelog.md
@@ -3,7 +3,13 @@
 
 ## Changes affecting backward compatibility
 
-
+- The `Math.trunc` polyfill for targeting Internet Explorer was
+  previously emitted for every JavaScript output file except if
+  the symbol `nodejs` was defined via `-d:nodejs`. Now, it is only
+  emitted if the symbol `nimJsMathTruncPolyfill` is defined. If you are
+  targeting Internet Explorer, you may choose to enable this option
+  or define your own `Math.trunc` polyfill using the [`emit` pragma](https://nim-lang.org/docs/manual.html#implementation-specific-pragmas-emit-pragma). Nim uses
+  `Math.trunc` for the division and modulo operators for integers.
 
 ## Standard library additions and changes
 
diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim
index cd4f378be..250bd069d 100644
--- a/lib/system/jssys.nim
+++ b/lib/system/jssys.nim
@@ -763,7 +763,8 @@ proc nimParseBiggestFloat(s: string, number: var BiggestFloat, start: int): int
 
 # Workaround for IE, IE up to version 11 lacks 'Math.trunc'. We produce
 # 'Math.trunc' for Nim's ``div`` and ``mod`` operators:
-const jsMathTrunc = """
+when defined(nimJsMathTruncPolyfill):
+  {.emit: """
 if (!Math.trunc) {
   Math.trunc = function(v) {
     v = +v;
@@ -771,5 +772,4 @@ if (!Math.trunc) {
     return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0);
   };
 }
-"""
-when not defined(nodejs): {.emit: jsMathTrunc .}
+""".}