diff options
author | metagn <metagngn@gmail.com> | 2024-09-19 01:35:29 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-19 00:35:29 +0200 |
commit | 6cc50ec3163c79b120bf17e32810946bad6b3893 (patch) | |
tree | 80feb915978de329898be8660edc20fc9f90f18e | |
parent | 58cf62451d144d9fd5438f1798e7dfb3423f373f (diff) | |
download | Nim-6cc50ec3163c79b120bf17e32810946bad6b3893.tar.gz |
fix system for nimscript config files on js backend (#24135)
fixes #21441 When compiling for JS, nimscript config files have both `defined(js)` and `defined(nimscript)` be true at the same time. This is required so that the nimscript config file knows the current compilation is for the JS backend. However the system module doesn't account for this in some cases, defining JS-specific code or not defining nimscript-specific code when compiling such nimscript files. To fix this, have the `nimscript` define take priority over the `js` one.
-rw-r--r-- | lib/system.nim | 6 | ||||
-rw-r--r-- | tests/js/tjsnimscombined.nim | 1 | ||||
-rw-r--r-- | tests/js/tjsnimscombined.nims | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/lib/system.nim b/lib/system.nim index 5f4847b7d..2f9cdc5f9 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2085,7 +2085,8 @@ when notJSnotNims: proc cmpMem(a, b: pointer, size: Natural): int = nimCmpMem(a, b, size).int -when not defined(js): +when not defined(js) or defined(nimscript): + # nimscript can be defined if config file for js compilation proc cmp(x, y: string): int = when nimvm: if x < y: result = -1 @@ -2365,7 +2366,8 @@ proc finished*[T: iterator {.closure.}](x: T): bool {.noSideEffect, inline, magi from std/private/digitsutils import addInt export addInt -when defined(js): +when defined(js) and not defined(nimscript): + # nimscript can be defined if config file for js compilation include "system/jssys" include "system/reprjs" diff --git a/tests/js/tjsnimscombined.nim b/tests/js/tjsnimscombined.nim new file mode 100644 index 000000000..4d3e6c453 --- /dev/null +++ b/tests/js/tjsnimscombined.nim @@ -0,0 +1 @@ +import std/jsffi diff --git a/tests/js/tjsnimscombined.nims b/tests/js/tjsnimscombined.nims new file mode 100644 index 000000000..01b93d3fa --- /dev/null +++ b/tests/js/tjsnimscombined.nims @@ -0,0 +1 @@ +# test the condition where both `js` and `nimscript` are defined (nimscript receives priority) |