diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-03-16 23:40:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-17 07:40:29 +0100 |
commit | 4d3f3513e2695d4bcb8ffef2521ff7abcce70bdf (patch) | |
tree | 2483f4964af7b45be14ffcdd8a440763eba00604 | |
parent | 5fe5f470333437311bc9f9d1b01b6195d36db5b4 (diff) | |
download | Nim-4d3f3513e2695d4bcb8ffef2521ff7abcce70bdf.tar.gz |
followup #16067 --spellSuggest (#17401)
* followup #16067 --spellSuggest * enable --spellSuggest by default * fixup
-rw-r--r-- | compiler/condsyms.nim | 1 | ||||
-rw-r--r-- | compiler/lookups.nim | 8 | ||||
-rw-r--r-- | compiler/options.nim | 38 | ||||
-rw-r--r-- | tests/config.nims | 1 |
4 files changed, 25 insertions, 23 deletions
diff --git a/compiler/condsyms.nim b/compiler/condsyms.nim index dd6de38b2..aa955e763 100644 --- a/compiler/condsyms.nim +++ b/compiler/condsyms.nim @@ -129,3 +129,4 @@ proc initDefines*(symbols: StringTableRef) = defineSymbol("nimHasJsBigIntBackend") defineSymbol("nimHasWarningAsError") defineSymbol("nimHasHintAsError") + defineSymbol("nimHasSpellSuggest") diff --git a/compiler/lookups.nim b/compiler/lookups.nim index 9947e448d..0f6ec151a 100644 --- a/compiler/lookups.nim +++ b/compiler/lookups.nim @@ -382,10 +382,12 @@ template toOrderTup(a: SpellCandidate): auto = proc `<`(a, b: SpellCandidate): bool = a.toOrderTup < b.toOrderTup +proc mustFixSpelling(c: PContext): bool {.inline.} = + result = c.config.spellSuggestMax != 0 and c.compilesContextId == 0 + # don't slowdown inside compiles() + proc fixSpelling(c: PContext, n: PNode, ident: PIdent, result: var string) = ## when we cannot find the identifier, suggest nearby spellings - if c.config.spellSuggestMax == 0: return - if c.compilesContextId > 0: return # don't slowdown inside compiles() var list = initHeapQueue[SpellCandidate]() let name0 = ident.s.nimIdentNormalize @@ -458,7 +460,7 @@ proc errorUndeclaredIdentifier*(c: PContext; info: TLineInfo; name: string, extr proc errorUndeclaredIdentifierHint*(c: PContext; n: PNode, ident: PIdent): PSym = var extra = "" - fixSpelling(c, n, ident, extra) + if c.mustFixSpelling: fixSpelling(c, n, ident, extra) errorUndeclaredIdentifier(c, n.info, ident.s, extra) result = errorSym(c, n) diff --git a/compiler/options.nim b/compiler/options.nim index 6aa7533f7..a2d6a51b3 100644 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -101,8 +101,23 @@ type # please make sure we have under 32 options TGlobalOptions* = set[TGlobalOption] const - harmlessOptions* = {optForceFullMake, optNoLinking, optRun, - optUseColors, optStdout} + harmlessOptions* = {optForceFullMake, optNoLinking, optRun, optUseColors, optStdout} + genSubDir* = RelativeDir"nimcache" + NimExt* = "nim" + RodExt* = "rod" + HtmlExt* = "html" + JsonExt* = "json" + TagsExt* = "tags" + TexExt* = "tex" + IniExt* = "ini" + DefaultConfig* = RelativeFile"nim.cfg" + DefaultConfigNims* = RelativeFile"config.nims" + DocConfig* = RelativeFile"nimdoc.cfg" + DocTexConfig* = RelativeFile"nimdoc.tex.cfg" + htmldocsDir* = htmldocsDirname.RelativeDir + docRootDefault* = "@default" # using `@` instead of `$` to avoid shell quoting complications + oKeepVariableNames* = true + spellSuggestSecretSauce* = -1 type TBackend* = enum @@ -483,6 +498,7 @@ proc newConfigRef*(): ConfigRef = suggestMaxResults: 10_000, maxLoopIterationsVM: 10_000_000, vmProfileData: newProfileData(), + spellSuggestMax: spellSuggestSecretSauce, ) setTargetFromSystem(result.target) # enable colors by default on terminals @@ -560,24 +576,6 @@ template compilationCachePresent*(conf: ConfigRef): untyped = template optPreserveOrigSource*(conf: ConfigRef): untyped = optEmbedOrigSrc in conf.globalOptions -const - genSubDir* = RelativeDir"nimcache" - NimExt* = "nim" - RodExt* = "rod" - HtmlExt* = "html" - JsonExt* = "json" - TagsExt* = "tags" - TexExt* = "tex" - IniExt* = "ini" - DefaultConfig* = RelativeFile"nim.cfg" - DefaultConfigNims* = RelativeFile"config.nims" - DocConfig* = RelativeFile"nimdoc.cfg" - DocTexConfig* = RelativeFile"nimdoc.tex.cfg" - htmldocsDir* = htmldocsDirname.RelativeDir - docRootDefault* = "@default" # using `@` instead of `$` to avoid shell quoting complications - oKeepVariableNames* = true - spellSuggestSecretSauce* = -1 - proc mainCommandArg*(conf: ConfigRef): string = ## This is intended for commands like check or parse ## which will work on the main project file unless diff --git a/tests/config.nims b/tests/config.nims index 47a303e85..41edf0005 100644 --- a/tests/config.nims +++ b/tests/config.nims @@ -8,6 +8,7 @@ switch("path", "$lib/../testament/lib") switch("colors", "off") switch("listFullPaths", "off") switch("excessiveStackTrace", "off") +switch("spellSuggest", "0") # for std/unittest switch("define", "nimUnittestOutputLevel:PRINT_FAILURES") |