parent
56068101f6
commit
51f3ef6cb8
6 changed files with 34 additions and 2 deletions
|
|
@ -397,6 +397,11 @@
|
||||||
nim r main # uses cached binary
|
nim r main # uses cached binary
|
||||||
nim r main arg1 arg2 # ditto (runtime arguments are irrelevant)
|
nim r main arg1 arg2 # ditto (runtime arguments are irrelevant)
|
||||||
|
|
||||||
|
- The style checking of the compiler now supports a `--styleCheck:usages` switch. This switch
|
||||||
|
enforces that every symbol is written as it was declared, not enforcing
|
||||||
|
the official Nim style guide. To be enabled, this has to be combined either
|
||||||
|
with `--styleCheck:error` or `--styleCheck:hint`.
|
||||||
|
|
||||||
## Tool changes
|
## Tool changes
|
||||||
|
|
||||||
- The rst parser now supports markdown table syntax.
|
- The rst parser now supports markdown table syntax.
|
||||||
|
|
|
||||||
|
|
@ -971,6 +971,7 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo;
|
||||||
of "off": conf.globalOptions = conf.globalOptions - {optStyleHint, optStyleError}
|
of "off": conf.globalOptions = conf.globalOptions - {optStyleHint, optStyleError}
|
||||||
of "hint": conf.globalOptions = conf.globalOptions + {optStyleHint} - {optStyleError}
|
of "hint": conf.globalOptions = conf.globalOptions + {optStyleHint} - {optStyleError}
|
||||||
of "error": conf.globalOptions = conf.globalOptions + {optStyleError}
|
of "error": conf.globalOptions = conf.globalOptions + {optStyleError}
|
||||||
|
of "usages": conf.globalOptions.incl optStyleUsages
|
||||||
else: localError(conf, info, errOffHintsError % arg)
|
else: localError(conf, info, errOffHintsError % arg)
|
||||||
of "showallmismatches":
|
of "showallmismatches":
|
||||||
processOnOffSwitchG(conf, {optShowAllMismatches}, arg, pass, info)
|
processOnOffSwitchG(conf, {optShowAllMismatches}, arg, pass, info)
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ proc nep1CheckDefImpl(conf: ConfigRef; info: TLineInfo; s: PSym; k: TSymKind) =
|
||||||
lintReport(conf, info, beau, s.name.s)
|
lintReport(conf, info, beau, s.name.s)
|
||||||
|
|
||||||
template styleCheckDef*(conf: ConfigRef; info: TLineInfo; s: PSym; k: TSymKind) =
|
template styleCheckDef*(conf: ConfigRef; info: TLineInfo; s: PSym; k: TSymKind) =
|
||||||
if {optStyleHint, optStyleError} * conf.globalOptions != {}:
|
if {optStyleHint, optStyleError} * conf.globalOptions != {} and optStyleUsages notin conf.globalOptions:
|
||||||
nep1CheckDefImpl(conf, info, s, k)
|
nep1CheckDefImpl(conf, info, s, k)
|
||||||
|
|
||||||
template styleCheckDef*(conf: ConfigRef; info: TLineInfo; s: PSym) =
|
template styleCheckDef*(conf: ConfigRef; info: TLineInfo; s: PSym) =
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ type # please make sure we have under 32 options
|
||||||
optUseNimcache, # save artifacts (including binary) in $nimcache
|
optUseNimcache, # save artifacts (including binary) in $nimcache
|
||||||
optStyleHint, # check that the names adhere to NEP-1
|
optStyleHint, # check that the names adhere to NEP-1
|
||||||
optStyleError, # enforce that the names adhere to NEP-1
|
optStyleError, # enforce that the names adhere to NEP-1
|
||||||
|
optStyleUsages, # only enforce consistent **usages** of the symbol
|
||||||
optSkipSystemConfigFile, # skip the system's cfg/nims config file
|
optSkipSystemConfigFile, # skip the system's cfg/nims config file
|
||||||
optSkipProjConfigFile, # skip the project's cfg/nims config file
|
optSkipProjConfigFile, # skip the project's cfg/nims config file
|
||||||
optSkipUserConfigFile, # skip the users's cfg/nims config file
|
optSkipUserConfigFile, # skip the users's cfg/nims config file
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ Advanced options:
|
||||||
produce hints or errors for Nim identifiers that
|
produce hints or errors for Nim identifiers that
|
||||||
do not adhere to Nim's official style guide
|
do not adhere to Nim's official style guide
|
||||||
https://nim-lang.org/docs/nep1.html
|
https://nim-lang.org/docs/nep1.html
|
||||||
|
--styleCheck:usages only enforce consistent spellings of identifiers,
|
||||||
|
do not enforce the style on declarations
|
||||||
--showAllMismatches:on|off
|
--showAllMismatches:on|off
|
||||||
show all mismatching candidates in overloading
|
show all mismatching candidates in overloading
|
||||||
resolution
|
resolution
|
||||||
|
|
|
||||||
23
tests/stylecheck/tusages.nim
Normal file
23
tests/stylecheck/tusages.nim
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
discard """
|
||||||
|
cmd: "nim c --styleCheck:error --styleCheck:usages $file"
|
||||||
|
errormsg: "'BAD_STYLE' should be: 'BADSTYLE'"
|
||||||
|
line: 20
|
||||||
|
"""
|
||||||
|
|
||||||
|
import strutils
|
||||||
|
|
||||||
|
proc BADSTYLE(c: char) = discard
|
||||||
|
|
||||||
|
proc toSnakeCase(s: string): string =
|
||||||
|
result = newStringOfCap(s.len + 3)
|
||||||
|
for i in 0..<s.len:
|
||||||
|
if s[i] in {'A'..'Z'}:
|
||||||
|
if i > 0 and s[i-1] in {'a'..'z'}:
|
||||||
|
result.add '_'
|
||||||
|
result.add toLowerAscii(s[i])
|
||||||
|
else:
|
||||||
|
result.add s[i]
|
||||||
|
BAD_STYLE(s[i])
|
||||||
|
|
||||||
|
echo toSnakeCase("fooBarBaz Yes")
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue