From ebd1c678be5e0acee4fca67e1b7060234821ccf6 Mon Sep 17 00:00:00 2001
From: ringabout <43030857+ringabout@users.noreply.github.com>
Date: Fri, 30 Dec 2022 03:15:08 +0800
Subject: fixes #21195; `std/assertions` continue to use `sysFatal` when
`nimPreviewSlimSystem` is not defined (#21196)
* fixes #21195; `std/assertions` continue to use `sysFatal`
* try includes
* make `std/assertions` self-contained
* fixes tests
* fixes tests
---
lib/std/assertions.nim | 9 ++++++++-
lib/system.nim | 28 +++-------------------------
lib/system/rawquits.nim | 27 +++++++++++++++++++++++++++
3 files changed, 38 insertions(+), 26 deletions(-)
create mode 100644 lib/system/rawquits.nim
(limited to 'lib')
diff --git a/lib/std/assertions.nim b/lib/std/assertions.nim
index 229033c58..a249d7751 100644
--- a/lib/std/assertions.nim
+++ b/lib/std/assertions.nim
@@ -7,6 +7,10 @@
# distribution, for details about the copyright.
#
+when not defined(nimPreviewSlimSystem) and not declared(sysFatal):
+ include "system/rawquits"
+ include "system/fatal"
+
## This module implements assertion handling.
import std/private/miscdollars
@@ -26,7 +30,10 @@ proc `$`(info: InstantiationInfo): string =
proc raiseAssert*(msg: string) {.noinline, noreturn, nosinks.} =
## Raises an `AssertionDefect` with `msg`.
- raise newException(AssertionDefect, msg)
+ when defined(nimPreviewSlimSystem):
+ raise newException(AssertionDefect, msg)
+ else:
+ sysFatal(AssertionDefect, msg)
proc failedAssertImpl*(msg: string) {.raises: [], tags: [].} =
## Raises an `AssertionDefect` with `msg`, but this is hidden
diff --git a/lib/system.nim b/lib/system.nim
index e9c9ebfeb..d8fafc0ef 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -1081,31 +1081,9 @@ proc align(address, alignment: int): int =
else:
result = (address + (alignment - 1)) and not (alignment - 1)
-when defined(nimNoQuit):
- proc rawQuit(errorcode: int = QuitSuccess) = discard "ignoring quit"
-
-elif defined(genode):
- import genode/env
-
- var systemEnv {.exportc: runtimeEnvSym.}: GenodeEnvPtr
-
- type GenodeEnv* = GenodeEnvPtr
- ## Opaque type representing Genode environment.
-
- proc rawQuit(env: GenodeEnv; errorcode: int) {.magic: "Exit", noreturn,
- importcpp: "#->parent().exit(@); Genode::sleep_forever()", header: "".}
-
- proc rawQuit(errorcode: int = QuitSuccess) {.inline, noreturn.} =
- systemEnv.rawQuit(errorcode)
-
-
-elif defined(js) and defined(nodejs) and not defined(nimscript):
- proc rawQuit(errorcode: int = QuitSuccess) {.magic: "Exit",
- importc: "process.exit", noreturn.}
-
-else:
- proc rawQuit(errorcode: cint) {.
- magic: "Exit", importc: "exit", header: "", noreturn.}
+include system/rawquits
+when defined(genode):
+ export GenodeEnv
template sysAssert(cond: bool, msg: string) =
when defined(useSysAssert):
diff --git a/lib/system/rawquits.nim b/lib/system/rawquits.nim
new file mode 100644
index 000000000..f0ead10c6
--- /dev/null
+++ b/lib/system/rawquits.nim
@@ -0,0 +1,27 @@
+import system/ctypes
+
+when defined(nimNoQuit):
+ proc rawQuit(errorcode: int = QuitSuccess) = discard "ignoring quit"
+
+elif defined(genode):
+ import genode/env
+
+ var systemEnv {.exportc: runtimeEnvSym.}: GenodeEnvPtr
+
+ type GenodeEnv = GenodeEnvPtr
+ ## Opaque type representing Genode environment.
+
+ proc rawQuit(env: GenodeEnv; errorcode: int) {.magic: "Exit", noreturn,
+ importcpp: "#->parent().exit(@); Genode::sleep_forever()", header: "".}
+
+ proc rawQuit(errorcode: int = QuitSuccess) {.inline, noreturn.} =
+ systemEnv.rawQuit(errorcode)
+
+
+elif defined(js) and defined(nodejs) and not defined(nimscript):
+ proc rawQuit(errorcode: int = QuitSuccess) {.magic: "Exit",
+ importc: "process.exit", noreturn.}
+
+else:
+ proc rawQuit(errorcode: cint) {.
+ magic: "Exit", importc: "exit", header: "", noreturn.}
\ No newline at end of file
--
cgit 1.4.1-2-gfad0