* fixes #20149; hintAsError/warningAsError ignores foreign packages * add changelog * fixes the test * remove * fixes tests again * fix * I'm careless Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com>
This commit is contained in:
parent
c9c1c97f1e
commit
641381e3d4
4 changed files with 14 additions and 8 deletions
|
|
@ -127,7 +127,7 @@
|
||||||
- `nim` can now compile version 1.4.0 as follows: `nim c --lib:lib --stylecheck:off compiler/nim`,
|
- `nim` can now compile version 1.4.0 as follows: `nim c --lib:lib --stylecheck:off compiler/nim`,
|
||||||
without requiring `-d:nimVersion140` which is now a noop.
|
without requiring `-d:nimVersion140` which is now a noop.
|
||||||
|
|
||||||
- `--styleCheck` now only applies to the current package.
|
- `--styleCheck`, `--hintAsError` and `--warningAsError` now only applies to the current package.
|
||||||
|
|
||||||
- The switch `--nimMainPrefix:prefix` has been added to add a prefix to the names of `NimMain` and
|
- The switch `--nimMainPrefix:prefix` has been added to add a prefix to the names of `NimMain` and
|
||||||
related functions produced on the backend. This prevents conflicts with other Nim
|
related functions produced on the backend. This prevents conflicts with other Nim
|
||||||
|
|
|
||||||
|
|
@ -418,12 +418,12 @@ To create a stacktrace, rerun compilation with './koch temp $1 <file>', see $2 f
|
||||||
[conf.command, "intern.html#debugging-the-compiler".createDocLink], conf.unitSep)
|
[conf.command, "intern.html#debugging-the-compiler".createDocLink], conf.unitSep)
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
proc handleError(conf: ConfigRef; msg: TMsgKind, eh: TErrorHandling, s: string) =
|
proc handleError(conf: ConfigRef; msg: TMsgKind, eh: TErrorHandling, s: string, ignoreMsg: bool) =
|
||||||
if msg in fatalMsgs:
|
if msg in fatalMsgs:
|
||||||
if conf.cmd == cmdIdeTools: log(s)
|
if conf.cmd == cmdIdeTools: log(s)
|
||||||
quit(conf, msg)
|
quit(conf, msg)
|
||||||
if msg >= errMin and msg <= errMax or
|
if msg >= errMin and msg <= errMax or
|
||||||
(msg in warnMin..hintMax and msg in conf.warningAsErrors):
|
(msg in warnMin..hintMax and msg in conf.warningAsErrors and not ignoreMsg):
|
||||||
inc(conf.errorCounter)
|
inc(conf.errorCounter)
|
||||||
conf.exitcode = 1'i8
|
conf.exitcode = 1'i8
|
||||||
if conf.errorCounter >= conf.errorMax:
|
if conf.errorCounter >= conf.errorMax:
|
||||||
|
|
@ -531,8 +531,7 @@ proc liMessage*(conf: ConfigRef; info: TLineInfo, msg: TMsgKind, arg: string,
|
||||||
of warnMin..warnMax:
|
of warnMin..warnMax:
|
||||||
sev = Severity.Warning
|
sev = Severity.Warning
|
||||||
ignoreMsg = not conf.hasWarn(msg)
|
ignoreMsg = not conf.hasWarn(msg)
|
||||||
if msg in conf.warningAsErrors:
|
if not ignoreMsg and msg in conf.warningAsErrors:
|
||||||
ignoreMsg = false
|
|
||||||
title = ErrorTitle
|
title = ErrorTitle
|
||||||
else:
|
else:
|
||||||
title = WarningTitle
|
title = WarningTitle
|
||||||
|
|
@ -542,8 +541,7 @@ proc liMessage*(conf: ConfigRef; info: TLineInfo, msg: TMsgKind, arg: string,
|
||||||
of hintMin..hintMax:
|
of hintMin..hintMax:
|
||||||
sev = Severity.Hint
|
sev = Severity.Hint
|
||||||
ignoreMsg = not conf.hasHint(msg)
|
ignoreMsg = not conf.hasHint(msg)
|
||||||
if msg in conf.warningAsErrors:
|
if not ignoreMsg and msg in conf.warningAsErrors:
|
||||||
ignoreMsg = false
|
|
||||||
title = ErrorTitle
|
title = ErrorTitle
|
||||||
else:
|
else:
|
||||||
title = HintTitle
|
title = HintTitle
|
||||||
|
|
@ -569,7 +567,7 @@ proc liMessage*(conf: ConfigRef; info: TLineInfo, msg: TMsgKind, arg: string,
|
||||||
" compiler msg initiated here", KindColor,
|
" compiler msg initiated here", KindColor,
|
||||||
KindFormat % $hintMsgOrigin,
|
KindFormat % $hintMsgOrigin,
|
||||||
resetStyle, conf.unitSep)
|
resetStyle, conf.unitSep)
|
||||||
handleError(conf, msg, eh, s)
|
handleError(conf, msg, eh, s, ignoreMsg)
|
||||||
if msg in fatalMsgs:
|
if msg in fatalMsgs:
|
||||||
# most likely would have died here but just in case, we restore state
|
# most likely would have died here but just in case, we restore state
|
||||||
conf.m.errorOutputs = errorOutputsOld
|
conf.m.errorOutputs = errorOutputsOld
|
||||||
|
|
|
||||||
2
tests/misc/m20149.nim
Normal file
2
tests/misc/m20149.nim
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
let x = 12
|
||||||
|
echo x
|
||||||
|
|
@ -249,12 +249,18 @@ sub/mmain.idx""", context
|
||||||
let cmd = fmt"{nim} r -b:cpp --hints:off --nimcache:{nimcache} --warningAsError:ProveInit {file}"
|
let cmd = fmt"{nim} r -b:cpp --hints:off --nimcache:{nimcache} --warningAsError:ProveInit {file}"
|
||||||
check execCmdEx(cmd) == ("witness\n", 0)
|
check execCmdEx(cmd) == ("witness\n", 0)
|
||||||
|
|
||||||
|
block: # bug #20149
|
||||||
|
let file = testsDir / "misc/m20149.nim"
|
||||||
|
let cmd = fmt"{nim} r --hints:off --nimcache:{nimcache} --hintAsError:XDeclaredButNotUsed {file}"
|
||||||
|
check execCmdEx(cmd) == ("12\n", 0)
|
||||||
|
|
||||||
block: # bug #15316
|
block: # bug #15316
|
||||||
let file = testsDir / "misc/m15316.nim"
|
let file = testsDir / "misc/m15316.nim"
|
||||||
let cmd = fmt"{nim} check --hints:off --nimcache:{nimcache} {file}"
|
let cmd = fmt"{nim} check --hints:off --nimcache:{nimcache} {file}"
|
||||||
check execCmdEx(cmd) == ("m15316.nim(1, 15) Error: expression expected, but found \')\'\nm15316.nim(2, 1) Error: expected: \':\', but got: \'[EOF]\'\nm15316.nim(2, 1) Error: expression expected, but found \'[EOF]\'\nm15316.nim(2, 1) " &
|
check execCmdEx(cmd) == ("m15316.nim(1, 15) Error: expression expected, but found \')\'\nm15316.nim(2, 1) Error: expected: \':\', but got: \'[EOF]\'\nm15316.nim(2, 1) Error: expression expected, but found \'[EOF]\'\nm15316.nim(2, 1) " &
|
||||||
"Error: expected: \')\', but got: \'[EOF]\'\nError: illformed AST: \n", 1)
|
"Error: expected: \')\', but got: \'[EOF]\'\nError: illformed AST: \n", 1)
|
||||||
|
|
||||||
|
|
||||||
block: # config.nims, nim.cfg, hintConf, bug #16557
|
block: # config.nims, nim.cfg, hintConf, bug #16557
|
||||||
let cmd = fmt"{nim} r --hint:all:off --hint:conf tests/newconfig/bar/mfoo.nim"
|
let cmd = fmt"{nim} r --hint:all:off --hint:conf tests/newconfig/bar/mfoo.nim"
|
||||||
let (outp, exitCode) = execCmdEx(cmd, options = {poStdErrToStdOut})
|
let (outp, exitCode) = execCmdEx(cmd, options = {poStdErrToStdOut})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue