fix some issues with --backend (#14363)
* fix some issues with --backend * fix https://github.com/timotheecour/Nim/issues/175; improve upon #14306
This commit is contained in:
parent
c32e1378eb
commit
c777f2fb60
11 changed files with 125 additions and 59 deletions
31
tests/misc/mbackend.nim
Normal file
31
tests/misc/mbackend.nim
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#[
|
||||
We can't merge this test inside a `when defined(cpp)` because some bug that was
|
||||
fixed would not trigger in that case.
|
||||
]#
|
||||
|
||||
import std/compilesettings
|
||||
import std/unittest
|
||||
|
||||
static:
|
||||
## bugfix 1: this used to CT error with: Error: unhandled exception: mimportcpp.nim(6, 18) `defined(cpp)`
|
||||
doAssert defined(cpp)
|
||||
doAssert querySetting(backend) == "cpp"
|
||||
|
||||
## checks that `--backend:c` has no side effect (ie, can be overridden by subsequent commands)
|
||||
doAssert not defined(c)
|
||||
doAssert not defined(js)
|
||||
doAssert not defined(js)
|
||||
|
||||
type
|
||||
std_exception {.importcpp: "std::exception", header: "<exception>".} = object
|
||||
proc what(s: std_exception): cstring {.importcpp: "((char *)#.what())".}
|
||||
|
||||
var isThrown = false
|
||||
try:
|
||||
## bugfix 2: this used to CT error with: Error: only a 'ref object' can be raised
|
||||
raise std_exception()
|
||||
except std_exception as ex:
|
||||
doAssert ex.what().len > 0
|
||||
isThrown = true
|
||||
|
||||
doAssert isThrown
|
||||
Loading…
Add table
Add a link
Reference in a new issue