summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2022-11-01 14:56:32 +0800
committerGitHub <noreply@github.com>2022-11-01 07:56:32 +0100
commitd735c447d35948ef6fda8270d1665cbd66c4636a (patch)
tree7d125f6c7bf5887b8b8d13acaaef6a6db6a8f06d
parent49e793e8c4b42a5bc08bc6ed27123389c3bdc353 (diff)
downloadNim-d735c447d35948ef6fda8270d1665cbd66c4636a.tar.gz
make `system/fatal` importable (#20719)
-rw-r--r--lib/std/assertions.nim3
-rw-r--r--lib/system.nim9
-rw-r--r--lib/system/fatal.nim19
3 files changed, 15 insertions, 16 deletions
diff --git a/lib/std/assertions.nim b/lib/std/assertions.nim
index 0bc4653f2..a39aee6c8 100644
--- a/lib/std/assertions.nim
+++ b/lib/std/assertions.nim
@@ -9,8 +9,7 @@
 
 ## This module implements assertion handling.
 
-when not declared(sysFatal):
-  include "system/fatal"
+import system/fatal
 
 import std/private/miscdollars
 # ---------------------------------------------------------------------------
diff --git a/lib/system.nim b/lib/system.nim
index 95ba23a11..e84971aa2 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -1637,8 +1637,13 @@ when not defined(nimscript):
     ## for debug builds. Since it's usually used for debugging, this
     ## is proclaimed to have no IO effect!
 
-when not declared(sysFatal):
-  include "system/fatal"
+
+when defined(nimHasExceptionsQuery):
+  const gotoBasedExceptions = compileOption("exceptions", "goto")
+else:
+  const gotoBasedExceptions = false
+
+import system/fatal
 
 when not defined(nimscript):
   {.push stackTrace: off, profiler: off.}
diff --git a/lib/system/fatal.nim b/lib/system/fatal.nim
index c01787a32..6e2edf573 100644
--- a/lib/system/fatal.nim
+++ b/lib/system/fatal.nim
@@ -9,27 +9,22 @@
 
 {.push profiler: off.}
 
-when defined(nimHasExceptionsQuery):
-  const gotoBasedExceptions = compileOption("exceptions", "goto")
-else:
-  const gotoBasedExceptions = false
-
 when hostOS == "standalone":
   include "$projectpath/panicoverride"
 
-  func sysFatal(exceptn: typedesc, message: string) {.inline.} =
+  func sysFatal*(exceptn: typedesc, message: string) {.inline.} =
     panic(message)
 
-  func sysFatal(exceptn: typedesc, message, arg: string) {.inline.} =
+  func sysFatal*(exceptn: typedesc, message, arg: string) {.inline.} =
     rawoutput(message)
     panic(arg)
 
 elif (defined(nimQuirky) or defined(nimPanics)) and not defined(nimscript):
-  import ansi_c
+  import system/ansi_c
 
   func name(t: typedesc): string {.magic: "TypeTrait".}
 
-  func sysFatal(exceptn: typedesc, message, arg: string) {.inline, noreturn.} =
+  func sysFatal*(exceptn: typedesc, message, arg: string) {.inline, noreturn.} =
     when nimvm:
       # TODO when doAssertRaises works in CT, add a test for it
       raise (ref exceptn)(msg: message & arg)
@@ -46,14 +41,14 @@ elif (defined(nimQuirky) or defined(nimPanics)) and not defined(nimscript):
         cstderr.rawWrite buf
       quit 1
 
-  func sysFatal(exceptn: typedesc, message: string) {.inline, noreturn.} =
+  func sysFatal*(exceptn: typedesc, message: string) {.inline, noreturn.} =
     sysFatal(exceptn, message, "")
 
 else:
-  func sysFatal(exceptn: typedesc, message: string) {.inline, noreturn.} =
+  func sysFatal*(exceptn: typedesc, message: string) {.inline, noreturn.} =
     raise (ref exceptn)(msg: message)
 
-  func sysFatal(exceptn: typedesc, message, arg: string) {.inline, noreturn.} =
+  func sysFatal*(exceptn: typedesc, message, arg: string) {.inline, noreturn.} =
     raise (ref exceptn)(msg: message & arg)
 
 {.pop.}