Skip to content

Commit

Permalink
* honor --errorMax even for tools (eg drnim, nim doc) (nim-lang#14546)
Browse files Browse the repository at this point in the history
* fix a bug that prevented nim doc compiler/nim on windows
  • Loading branch information
timotheecour authored and FedericoCeratto committed Jun 4, 2020
1 parent dcd86c2 commit 3579852
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 15 deletions.
6 changes: 3 additions & 3 deletions compiler/main.nim
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ proc commandGenDepend(graph: ModuleGraph) =
' ' & changeFileExt(project, "dot").string)

proc commandCheck(graph: ModuleGraph) =
graph.config.errorMax = high(int) # do not stop after first error
graph.config.setErrorMaxHighMaybe
defineSymbol(graph.config.symbols, "nimcheck")
semanticPasses(graph) # use an empty backend for semantic checking only
compileProject(graph)

when not defined(leanCompiler):
proc commandDoc2(graph: ModuleGraph; json: bool) =
handleDocOutputOptions graph.config
graph.config.errorMax = high(int) # do not stop after first error
graph.config.setErrorMaxHighMaybe
semanticPasses(graph)
if json: registerPass(graph, docgen2JsonPass)
else: registerPass(graph, docgen2Pass)
Expand Down Expand Up @@ -136,7 +136,7 @@ proc interactivePasses(graph: ModuleGraph) =
registerPass(graph, evalPass)

proc commandInteractive(graph: ModuleGraph) =
graph.config.errorMax = high(int) # do not stop after first error
graph.config.setErrorMaxHighMaybe
interactivePasses(graph)
compileSystemModule(graph)
if graph.config.commandArgs.len > 0:
Expand Down
3 changes: 2 additions & 1 deletion compiler/nimeval.nim
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ proc destroyInterpreter*(i: Interpreter) =
proc runRepl*(r: TLLRepl;
searchPaths: openArray[string];
supportNimscript: bool) =
## deadcode but please don't remove... might be revived
var conf = newConfigRef()
var cache = newIdentCache()
var graph = newModuleGraph(cache, conf)
Expand All @@ -146,7 +147,7 @@ proc runRepl*(r: TLLRepl;
if conf.libpath.isEmpty: conf.libpath = AbsoluteDir p

conf.cmd = cmdInteractive
conf.errorMax = high(int)
conf.setErrorMaxHighMaybe
initDefines(conf.symbols)
defineSymbol(conf.symbols, "nimscript")
if supportNimscript: defineSymbol(conf.symbols, "nimconfig")
Expand Down
8 changes: 8 additions & 0 deletions compiler/options.nim
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,14 @@ type
severity: Severity) {.closure, gcsafe.}
cppCustomNamespace*: string

proc assignIfDefault*[T](result: var T, val: T, def = default(T)) =
## if `result` was already assigned to a value (that wasn't `def`), this is a noop.
if result == def: result = val

template setErrorMaxHighMaybe*(conf: ConfigRef) =
## do not stop after first error (but honor --errorMax if provided)
assignIfDefault(conf.errorMax, high(int))

proc setNoteDefaults*(conf: ConfigRef, note: TNoteKind, enabled = true) =
template fun(op) =
conf.notes.op note
Expand Down
2 changes: 1 addition & 1 deletion compiler/sem.nim
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ proc tryConstExpr(c: PContext, n: PNode): PNode =
let oldErrorOutputs = c.config.m.errorOutputs

c.config.m.errorOutputs = {}
c.config.errorMax = high(int)
c.config.errorMax = high(int) # `setErrorMaxHighMaybe` not appropriate here

try:
result = evalConstExpr(c.module, c.graph, e)
Expand Down
3 changes: 1 addition & 2 deletions compiler/semexprs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2074,8 +2074,7 @@ proc tryExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode =
if c.compilesContextId == 0:
inc c.compilesContextIdGenerator
c.compilesContextId = c.compilesContextIdGenerator
# do not halt after first error:
c.config.errorMax = high(int)
c.config.errorMax = high(int) # `setErrorMaxHighMaybe` not appropriate here

# open a scope for temporary symbol inclusions:
let oldScope = c.currentScope
Expand Down
2 changes: 1 addition & 1 deletion drnim/drnim.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1192,7 +1192,7 @@ proc mainCommand(graph: ModuleGraph) =
graph.strongSemCheck = strongSemCheck
graph.compatibleProps = compatibleProps

graph.config.errorMax = high(int) # do not stop after first error
graph.config.setErrorMaxHighMaybe
defineSymbol(graph.config.symbols, "nimcheck")
defineSymbol(graph.config.symbols, "nimDrNim")

Expand Down
6 changes: 2 additions & 4 deletions nimsuggest/nimsuggest.nim
Original file line number Diff line number Diff line change
Expand Up @@ -525,8 +525,7 @@ proc mainCommand(graph: ModuleGraph) =

add(conf.searchPaths, conf.libpath)

# do not stop after the first error:
conf.errorMax = high(int)
conf.setErrorMaxHighMaybe # honor --errorMax even if it may not make sense here
# do not print errors, but log them
conf.writelnHook = myLog
conf.structuredErrorHook = nil
Expand Down Expand Up @@ -674,8 +673,7 @@ else:

add(conf.searchPaths, conf.libpath)

# do not stop after the first error:
conf.errorMax = high(int)
conf.setErrorMaxHighMaybe
# do not print errors, but log them
conf.writelnHook = myLog
conf.structuredErrorHook = nil
Expand Down
4 changes: 3 additions & 1 deletion tools/kochdocs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import "../compiler/nimpaths"

const
gaCode* = " --doc.googleAnalytics:UA-48159761-1"
nimArgs = "--hint:Conf:off --hint:Path:off --hint:Processing:off -d:boot --putenv:nimversion=$#" % system.NimVersion
# errormax: subsequent errors are probably consequences of 1st one; a simple
# bug could cause unlimited number of errors otherwise, hard to debug in CI.
nimArgs = "--errormax:3 --hint:Conf:off --hint:Path:off --hint:Processing:off -d:boot --putenv:nimversion=$#" % system.NimVersion
gitUrl = "https://github.com/nim-lang/Nim"
docHtmlOutput = "doc/html"
webUploadOutput = "web/upload"
Expand Down
3 changes: 1 addition & 2 deletions tools/nimfind.nim
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,7 @@ proc mainCommand(graph: ModuleGraph) =
if not fileExists(conf.projectFull):
quit "cannot find file: " & conf.projectFull.string
add(conf.searchPaths, conf.libpath)
# do not stop after the first error:
conf.errorMax = high(int)
conf.setErrorMaxHighMaybe
try:
compileProject(graph)
finally:
Expand Down

0 comments on commit 3579852

Please sign in to comment.