mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-16 01:35:35 +00:00
@@ -60,6 +60,10 @@
|
||||
|
||||
- Removed `.travis.yml`, `appveyor.yml.disabled`, `.github/workflows/ci.yml.disabled`.
|
||||
|
||||
- Nim compiler now adds ASCII unit separator `\31` before a newline for every generated
|
||||
message (potentially multiline), so tooling can tell when messages start and end.
|
||||
|
||||
|
||||
## Standard library additions and changes
|
||||
- Added support for parenthesized expressions in `strformat`
|
||||
|
||||
|
||||
@@ -349,7 +349,8 @@ proc mainCommand*(graph: ModuleGraph) =
|
||||
(key: "warnings", val: warnings),
|
||||
]
|
||||
|
||||
msgWriteln(conf, $dumpdata, {msgStdout, msgSkipHook})
|
||||
msgWriteln(conf, $dumpdata, {msgStdout, msgSkipHook, msgNoUnitSep})
|
||||
# `msgNoUnitSep` to avoid generating invalid json, refs bug #17853
|
||||
else:
|
||||
msgWriteln(conf, "-- list of currently defined symbols --",
|
||||
{msgStdout, msgSkipHook, msgNoUnitSep})
|
||||
|
||||
@@ -291,6 +291,7 @@ proc `??`* (conf: ConfigRef; info: TLineInfo, filename: string): bool =
|
||||
|
||||
const
|
||||
UnitSep = "\31"
|
||||
# this needs care to avoid issues similar to https://github.com/nim-lang/Nim/issues/17853
|
||||
|
||||
type
|
||||
MsgFlag* = enum ## flags altering msgWriteln behavior
|
||||
|
||||
@@ -44,7 +44,7 @@ type # please make sure we have under 32 options
|
||||
optImportHidden
|
||||
|
||||
TOptions* = set[TOption]
|
||||
TGlobalOption* = enum # **keep binary compatible**
|
||||
TGlobalOption* = enum
|
||||
gloptNone, optForceFullMake,
|
||||
optWasNimscript, # redundant with `cmdNimscript`, could be removed
|
||||
optListCmd, optCompileOnly, optNoLinking,
|
||||
|
||||
@@ -71,6 +71,7 @@ ret=[s1:foobar s2:foobar age:25 pi:3.14]
|
||||
|
||||
else: # don't run twice the same test
|
||||
import std/strutils
|
||||
import std/json
|
||||
template check2(msg) = doAssert msg in output, output
|
||||
|
||||
block: # tests with various options `nim doc --project --index --docroot`
|
||||
@@ -317,3 +318,13 @@ compiling: v3
|
||||
running: v3
|
||||
running: v2
|
||||
""", ret
|
||||
|
||||
block: # nim dump
|
||||
let cmd = fmt"{nim} dump --dump.format:json -d:D20210428T161003 --hints:off ."
|
||||
let (ret, status) = execCmdEx(cmd)
|
||||
doAssert status == 0
|
||||
let j = ret.parseJson
|
||||
# sanity checks
|
||||
doAssert "D20210428T161003" in j["defined_symbols"].to(seq[string])
|
||||
doAssert j["version"].to(string) == NimVersion
|
||||
doAssert j["nimExe"].to(string) == getCurrentCompilerExe()
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
discard """
|
||||
output: '''Error: cannot open 'a.nim'\31
|
||||
output: '''
|
||||
Error: cannot open 'a.nim'\31
|
||||
Error: cannot open 'b.nim'\31
|
||||
'''
|
||||
targets: "c"
|
||||
"""
|
||||
|
||||
import osproc
|
||||
from std/os import getCurrentCompilerExe
|
||||
|
||||
var ps: seq[Process] # compile & run 2 progs in parallel
|
||||
const nim = getCurrentCompilerExe()
|
||||
for prog in ["a", "b"]:
|
||||
ps.add startProcess("nim", "",
|
||||
ps.add startProcess(nim, "",
|
||||
["r", "--hint[Conf]=off", "--hint[Processing]=off", prog],
|
||||
options = {poUsePath, poDaemon, poStdErrToStdOut})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user