123456789101112131415161718192021222324252627282930313233343536373839 |
- const msg = "This char is `" & '\0' & "` and works fine!"
- when defined nim_t13115:
- # bug #13115
- template fn =
- raise newException(Exception, msg)
- when defined nim_t13115_static:
- static: fn()
- fn()
- else:
- import std/[osproc,strformat,os,strutils]
- proc main =
- const nim = getCurrentCompilerExe()
- const file = currentSourcePath
- for b in "c js cpp".split:
- when defined(openbsd):
- if b == "js":
- # xxx bug: pending #13115
- # remove special case once nodejs updated >= 12.16.2
- # refs https://github.com/nim-lang/Nim/pull/16167#issuecomment-738270751
- continue
- # save CI time by avoiding mostly redundant combinations as far as this bug is concerned
- var opts = case b
- of "c": @["", "-d:nim_t13115_static", "-d:danger", "-d:debug"]
- of "js": @["", "-d:nim_t13115_static"]
- else: @[""]
- for opt in opts:
- let cmd = fmt"{nim} r -b:{b} -d:nim_t13115 {opt} --hints:off {file}"
- let (outp, exitCode) = execCmdEx(cmd)
- when defined windows:
- # `\0` not preserved on windows
- doAssert "` and works fine!" in outp, cmd & "\n" & msg
- else:
- doAssert msg in outp, cmd & "\n" & msg
- doAssert exitCode == 1
- main()
|