mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 06:18:51 +00:00
* Revert "make `system/fatal` importable (#20718)"
This reverts commit d735c447d3.
* relieve `std/assertions` of the sysFatal dep
This commit is contained in:
@@ -9,8 +9,6 @@
|
||||
|
||||
## This module implements assertion handling.
|
||||
|
||||
import system/fatal
|
||||
|
||||
import std/private/miscdollars
|
||||
# ---------------------------------------------------------------------------
|
||||
# helpers
|
||||
@@ -30,7 +28,7 @@ when not defined(nimHasSinkInference):
|
||||
|
||||
proc raiseAssert*(msg: string) {.noinline, noreturn, nosinks.} =
|
||||
## Raises an `AssertionDefect` with `msg`.
|
||||
sysFatal(AssertionDefect, msg)
|
||||
raise newException(AssertionDefect, msg)
|
||||
|
||||
proc failedAssertImpl*(msg: string) {.raises: [], tags: [].} =
|
||||
## Raises an `AssertionDefect` with `msg`, but this is hidden
|
||||
|
||||
@@ -1637,13 +1637,8 @@ when not defined(nimscript):
|
||||
## for debug builds. Since it's usually used for debugging, this
|
||||
## is proclaimed to have no IO effect!
|
||||
|
||||
|
||||
when defined(nimHasExceptionsQuery):
|
||||
const gotoBasedExceptions = compileOption("exceptions", "goto")
|
||||
else:
|
||||
const gotoBasedExceptions = false
|
||||
|
||||
import system/fatal
|
||||
when not declared(sysFatal):
|
||||
include "system/fatal"
|
||||
|
||||
when not defined(nimscript):
|
||||
{.push stackTrace: off, profiler: off.}
|
||||
@@ -1656,6 +1651,12 @@ when not defined(nimscript):
|
||||
when defined(nimV2):
|
||||
include system/arc
|
||||
|
||||
template newException*(exceptn: typedesc, message: string;
|
||||
parentException: ref Exception = nil): untyped =
|
||||
## Creates an exception object of type `exceptn` and sets its `msg` field
|
||||
## to `message`. Returns the new exception object.
|
||||
(ref exceptn)(msg: message, parent: parentException)
|
||||
|
||||
when not defined(nimPreviewSlimSystem):
|
||||
{.deprecated: "assertions is about to move out of system; use `-d:nimPreviewSlimSystem` and import `std/assertions`".}
|
||||
import std/assertions
|
||||
@@ -1863,12 +1864,6 @@ proc debugEcho*(x: varargs[typed, `$`]) {.magic: "Echo", noSideEffect,
|
||||
## for debugging routines marked as `noSideEffect
|
||||
## <manual.html#pragmas-nosideeffect-pragma>`_.
|
||||
|
||||
template newException*(exceptn: typedesc, message: string;
|
||||
parentException: ref Exception = nil): untyped =
|
||||
## Creates an exception object of type `exceptn` and sets its `msg` field
|
||||
## to `message`. Returns the new exception object.
|
||||
(ref exceptn)(msg: message, parent: parentException)
|
||||
|
||||
when hostOS == "standalone" and defined(nogc):
|
||||
proc nimToCStringConv(s: NimString): cstring {.compilerproc, inline.} =
|
||||
if s == nil or s.len == 0: result = cstring""
|
||||
|
||||
@@ -9,22 +9,27 @@
|
||||
|
||||
{.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 system/ansi_c
|
||||
import 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)
|
||||
@@ -41,14 +46,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.}
|
||||
|
||||
@@ -8,7 +8,7 @@ tassert_c.nim(35) tassert_c
|
||||
tassert_c.nim(34) foo
|
||||
assertions.nim(*) failedAssertImpl
|
||||
assertions.nim(*) raiseAssert
|
||||
fatal.nim(*) sysFatal"""
|
||||
"""
|
||||
|
||||
proc tmatch(x, p: string): bool =
|
||||
var i = 0
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
discard """
|
||||
errormsg: "unhandled exception:"
|
||||
file: "system/fatal.nim"
|
||||
errormsg: "unhandled exception: t9768.nim(24, 12) `a < 4` [AssertionDefect]"
|
||||
file: "std/assertions.nim"
|
||||
nimout: '''
|
||||
stack trace: (most recent call last)
|
||||
t9768.nim(28, 33) main
|
||||
t9768.nim(23, 11) foo1
|
||||
t9768.nim(29, 33) main
|
||||
t9768.nim(24, 11) foo1
|
||||
'''
|
||||
"""
|
||||
|
||||
@@ -17,6 +17,7 @@ t9768.nim(23, 11) foo1
|
||||
|
||||
|
||||
|
||||
|
||||
## line 20
|
||||
|
||||
proc foo1(a: int): auto =
|
||||
|
||||
Reference in New Issue
Block a user