Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

honor --errorMax even for tools (eg nim doc etc) #14546

Merged
merged 1 commit into from
Jun 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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