Implement https://forum.nim-lang.org/t/7848#50018 (#17874)
* Implement https://forum.nim-lang.org/t/7848#50018 with just the same `SuccessX` hint category, build mode on a separate, final line, and no change to how the mode is spelled for -d:release/-d:danger. * Change to add a new BuildMode hint category and keep testament in sync as per comment. * Add "--hint:buildmode:off" to `defaultHintsOff`. * Remove as requested. * As requested for tests clean up. * Address code review. * Address code review. * Mirror db456423116a9b19666f551f4d38aded3964c2e2
This commit is contained in:
parent
7637cff9cf
commit
601c050fcb
6 changed files with 17 additions and 13 deletions
|
|
@ -64,7 +64,8 @@ type
|
||||||
warnFileChanged = "FileChanged",
|
warnFileChanged = "FileChanged",
|
||||||
warnUser = "User",
|
warnUser = "User",
|
||||||
|
|
||||||
hintSuccess = "Success", hintSuccessX = "SuccessX", hintCC = "CC",
|
hintSuccess = "Success", hintSuccessX = "SuccessX", hintBuildMode = "BuildMode",
|
||||||
|
hintCC = "CC",
|
||||||
hintLineTooLong = "LineTooLong", hintXDeclaredButNotUsed = "XDeclaredButNotUsed",
|
hintLineTooLong = "LineTooLong", hintXDeclaredButNotUsed = "XDeclaredButNotUsed",
|
||||||
hintXCannotRaiseY = "XCannotRaiseY", hintConvToBaseNotNeeded = "ConvToBaseNotNeeded",
|
hintXCannotRaiseY = "XCannotRaiseY", hintConvToBaseNotNeeded = "ConvToBaseNotNeeded",
|
||||||
hintConvFromXtoItselfNotNeeded = "ConvFromXtoItselfNotNeeded", hintExprAlwaysX = "ExprAlwaysX",
|
hintConvFromXtoItselfNotNeeded = "ConvFromXtoItselfNotNeeded", hintExprAlwaysX = "ExprAlwaysX",
|
||||||
|
|
@ -142,7 +143,8 @@ const
|
||||||
warnUser: "$1",
|
warnUser: "$1",
|
||||||
hintSuccess: "operation successful: $#",
|
hintSuccess: "operation successful: $#",
|
||||||
# keep in sync with `testament.isSuccess`
|
# keep in sync with `testament.isSuccess`
|
||||||
hintSuccessX: "${loc} lines; ${sec}s; $mem; $build build; proj: $project; out: $output",
|
hintSuccessX: "$loc lines; ${sec}s; $mem; proj: $project; out: $output",
|
||||||
|
hintBuildMode: "$1",
|
||||||
hintCC: "CC: $1",
|
hintCC: "CC: $1",
|
||||||
hintLineTooLong: "line too long",
|
hintLineTooLong: "line too long",
|
||||||
hintXDeclaredButNotUsed: "'$1' is declared but not used",
|
hintXDeclaredButNotUsed: "'$1' is declared but not used",
|
||||||
|
|
@ -196,7 +198,7 @@ proc computeNotesVerbosity(): array[0..3, TNoteKinds] =
|
||||||
result[1] = result[2] - {warnProveField, warnProveIndex,
|
result[1] = result[2] - {warnProveField, warnProveIndex,
|
||||||
warnGcUnsafe, hintPath, hintDependency, hintCodeBegin, hintCodeEnd,
|
warnGcUnsafe, hintPath, hintDependency, hintCodeBegin, hintCodeEnd,
|
||||||
hintSource, hintGlobalVar, hintGCStats, hintMsgOrigin}
|
hintSource, hintGlobalVar, hintGCStats, hintMsgOrigin}
|
||||||
result[0] = result[1] - {hintSuccessX, hintSuccess, hintConf,
|
result[0] = result[1] - {hintSuccessX, hintBuildMode, hintSuccess, hintConf,
|
||||||
hintProcessing, hintPattern, hintExecuting, hintLinking, hintCC}
|
hintProcessing, hintPattern, hintExecuting, hintLinking, hintCC}
|
||||||
|
|
||||||
const
|
const
|
||||||
|
|
|
||||||
|
|
@ -384,9 +384,9 @@ proc mainCommand*(graph: ModuleGraph) =
|
||||||
when declared(system.getMaxMem): formatSize(getMaxMem()) & " peakmem"
|
when declared(system.getMaxMem): formatSize(getMaxMem()) & " peakmem"
|
||||||
else: formatSize(getTotalMem()) & " totmem"
|
else: formatSize(getTotalMem()) & " totmem"
|
||||||
let loc = $conf.linesCompiled
|
let loc = $conf.linesCompiled
|
||||||
let build = if isDefined(conf, "danger"): "Dangerous Release"
|
let build = if isDefined(conf, "danger"): "Dangerous Release build"
|
||||||
elif isDefined(conf, "release"): "Release"
|
elif isDefined(conf, "release"): "Release build"
|
||||||
else: "Debug"
|
else: "***SLOW, DEBUG BUILD***; -d:release makes code run faster."
|
||||||
let sec = formatFloat(epochTime() - conf.lastCmdTime, ffDecimal, 3)
|
let sec = formatFloat(epochTime() - conf.lastCmdTime, ffDecimal, 3)
|
||||||
let project = if conf.filenameOption == foAbs: $conf.projectFull else: $conf.projectName
|
let project = if conf.filenameOption == foAbs: $conf.projectFull else: $conf.projectName
|
||||||
# xxx honor conf.filenameOption more accurately
|
# xxx honor conf.filenameOption more accurately
|
||||||
|
|
@ -406,10 +406,10 @@ proc mainCommand*(graph: ModuleGraph) =
|
||||||
"loc", loc,
|
"loc", loc,
|
||||||
"sec", sec,
|
"sec", sec,
|
||||||
"mem", mem,
|
"mem", mem,
|
||||||
"build", build,
|
|
||||||
"project", project,
|
"project", project,
|
||||||
"output", output,
|
"output", output,
|
||||||
])
|
])
|
||||||
|
rawMessage(conf, hintBuildMode, build)
|
||||||
|
|
||||||
when PrintRopeCacheStats:
|
when PrintRopeCacheStats:
|
||||||
echo "rope cache stats: "
|
echo "rope cache stats: "
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,7 @@ Source The source line that triggered a diagnostic
|
||||||
message.
|
message.
|
||||||
StackTrace
|
StackTrace
|
||||||
Success, SuccessX Successful compilation of a library or a binary.
|
Success, SuccessX Successful compilation of a library or a binary.
|
||||||
|
BuildMode Kind of build: debug, release, danger
|
||||||
User
|
User
|
||||||
UserRaw
|
UserRaw
|
||||||
XDeclaredButNotUsed Unused symbols in the code.
|
XDeclaredButNotUsed Unused symbols in the code.
|
||||||
|
|
|
||||||
|
|
@ -1210,19 +1210,19 @@ proc mainCommand(graph: ModuleGraph) =
|
||||||
when declared(system.getMaxMem): formatSize(getMaxMem()) & " peakmem"
|
when declared(system.getMaxMem): formatSize(getMaxMem()) & " peakmem"
|
||||||
else: formatSize(getTotalMem()) & " totmem"
|
else: formatSize(getTotalMem()) & " totmem"
|
||||||
let loc = $conf.linesCompiled
|
let loc = $conf.linesCompiled
|
||||||
let build = if isDefined(conf, "danger"): "Dangerous Release"
|
let build = if isDefined(conf, "danger"): "Dangerous Release build"
|
||||||
elif isDefined(conf, "release"): "Release"
|
elif isDefined(conf, "release"): "Release build"
|
||||||
else: "Debug"
|
else: "***SLOW, DEBUG BUILD***; -d:release makes code run faster."
|
||||||
let sec = formatFloat(epochTime() - conf.lastCmdTime, ffDecimal, 3)
|
let sec = formatFloat(epochTime() - conf.lastCmdTime, ffDecimal, 3)
|
||||||
let project = if conf.filenameOption == foAbs: $conf.projectFull else: $conf.projectName
|
let project = if conf.filenameOption == foAbs: $conf.projectFull else: $conf.projectName
|
||||||
rawMessage(conf, hintSuccessX, [
|
rawMessage(conf, hintSuccessX, [
|
||||||
"loc", loc,
|
"loc", loc,
|
||||||
"sec", sec,
|
"sec", sec,
|
||||||
"mem", mem,
|
"mem", mem,
|
||||||
"build", build,
|
|
||||||
"project", project,
|
"project", project,
|
||||||
"output", ""
|
"output", ""
|
||||||
])
|
])
|
||||||
|
rawMessage(conf, hintBuildMode, build)
|
||||||
|
|
||||||
proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) =
|
proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) =
|
||||||
var p = parseopt.initOptParser(cmd)
|
var p = parseopt.initOptParser(cmd)
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,8 @@ proc isSuccess(input: string): bool =
|
||||||
# that may appear in user config (eg: `--filenames`).
|
# that may appear in user config (eg: `--filenames`).
|
||||||
# Passing `XDG_CONFIG_HOME= testament args...` can be used to ignore user config
|
# Passing `XDG_CONFIG_HOME= testament args...` can be used to ignore user config
|
||||||
# stored in XDG_CONFIG_HOME, refs https://wiki.archlinux.org/index.php/XDG_Base_Directory
|
# stored in XDG_CONFIG_HOME, refs https://wiki.archlinux.org/index.php/XDG_Base_Directory
|
||||||
input.startsWith("Hint: ") and input.endsWith("[SuccessX]")
|
input.startsWith("Hint: ") and
|
||||||
|
(input.endsWith("[SuccessX]") or input.endsWith("[BuildMode]"))
|
||||||
|
|
||||||
proc getFileDir(filename: string): string =
|
proc getFileDir(filename: string): string =
|
||||||
result = filename.splitFile().dir
|
result = filename.splitFile().dir
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ proc isDots(a: string): bool =
|
||||||
a.startsWith(".") and a.strip(chars = {'.'}) == ""
|
a.startsWith(".") and a.strip(chars = {'.'}) == ""
|
||||||
|
|
||||||
const
|
const
|
||||||
defaultHintsOff = "--hint:successx:off --hint:exec:off --hint:link:off --hint:cc:off --hint:conf:off --hint:processing:off --hint:QuitCalled:off"
|
defaultHintsOff = "--hint:successx:off --hint:buildmode:off --hint:exec:off --hint:link:off --hint:cc:off --hint:conf:off --hint:processing:off --hint:QuitCalled:off"
|
||||||
# useful when you want to turn only some hints on, and some common ones off.
|
# useful when you want to turn only some hints on, and some common ones off.
|
||||||
# pending https://github.com/timotheecour/Nim/issues/453, simplify to: `--hints:off`
|
# pending https://github.com/timotheecour/Nim/issues/453, simplify to: `--hints:off`
|
||||||
nim = getCurrentCompilerExe()
|
nim = getCurrentCompilerExe()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue