diff options
author | Juan Carlos <juancarlospaco@gmail.com> | 2023-06-10 02:09:03 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-10 07:09:03 +0200 |
commit | b2d77619757c73a8b14a8ccf127eaf3e630159cf (patch) | |
tree | 346effaff0b8a9b6bbf702555a2bca10c5a87374 /compiler | |
parent | 65c412e3f01bc00f5c6f318edfbfe561ab1bf438 (diff) | |
download | Nim-b2d77619757c73a8b14a8ccf127eaf3e630159cf.tar.gz |
Remove Deprecated Nimfix (#22062)
* Remove Deprecated Nimfix * Trailing whitespace cleanups
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/cmdlinehelper.nim | 2 | ||||
-rw-r--r-- | compiler/lineinfos.nim | 2 | ||||
-rw-r--r-- | compiler/lookups.nim | 11 | ||||
-rw-r--r-- | compiler/main.nim | 2 | ||||
-rw-r--r-- | compiler/nimfix/nimfix.nim | 111 | ||||
-rw-r--r-- | compiler/nimfix/nimfix.nim.cfg | 17 | ||||
-rw-r--r-- | compiler/nimfix/prettybase.nim | 45 | ||||
-rw-r--r-- | compiler/options.nim | 1 | ||||
-rw-r--r-- | compiler/pragmas.nim | 8 | ||||
-rw-r--r-- | compiler/sem.nim | 2 | ||||
-rw-r--r-- | compiler/semexprs.nim | 4 | ||||
-rw-r--r-- | compiler/semstmts.nim | 20 |
12 files changed, 16 insertions, 209 deletions
diff --git a/compiler/cmdlinehelper.nim b/compiler/cmdlinehelper.nim index 02162755c..e35e5d2db 100644 --- a/compiler/cmdlinehelper.nim +++ b/compiler/cmdlinehelper.nim @@ -7,7 +7,7 @@ # distribution, for details about the copyright. # -## Helpers for binaries that use compiler passes, e.g.: nim, nimsuggest, nimfix +## Helpers for binaries that use compiler passes, e.g.: nim, nimsuggest import options, idents, nimconf, extccomp, commands, msgs, diff --git a/compiler/lineinfos.nim b/compiler/lineinfos.nim index f6d0d6264..7c5a99c79 100644 --- a/compiler/lineinfos.nim +++ b/compiler/lineinfos.nim @@ -277,7 +277,7 @@ type # and parsed; usually "" but is used # for 'nimsuggest' hash*: string # the checksum of the file - dirty*: bool # for 'nimfix' / 'nimpretty' like tooling + dirty*: bool # for 'nimpretty' like tooling when defined(nimpretty): fullContent*: string FileIndex* = distinct int32 diff --git a/compiler/lookups.nim b/compiler/lookups.nim index 9f376a602..dce841e2f 100644 --- a/compiler/lookups.nim +++ b/compiler/lookups.nim @@ -332,10 +332,10 @@ proc addDeclAt*(c: PContext; scope: PScope, sym: PSym, info: TLineInfo) = if sym.name.id == ord(wUnderscore): return let conflict = scope.addUniqueSym(sym) if conflict != nil: - if sym.kind == skModule and conflict.kind == skModule: + if sym.kind == skModule and conflict.kind == skModule: # e.g.: import foo; import foo # xxx we could refine this by issuing a different hint for the case - # where a duplicate import happens inside an include. + # where a duplicate import happens inside an include. if c.importModuleMap[sym.id] == c.importModuleMap[conflict.id]: #only hints if the conflict is the actual module not just a shared name localError(c.config, info, hintDuplicateModuleImport, @@ -428,13 +428,6 @@ proc mergeShadowScope*(c: PContext) = else: c.addInterfaceDecl(sym) -when false: - # `nimfix` used to call `altSpelling` and prettybase.replaceDeprecated(n.info, ident, alt) - proc altSpelling(c: PContext, x: PIdent): PIdent = - case x.s[0] - of 'A'..'Z': result = getIdent(c.cache, toLowerAscii(x.s[0]) & x.s.substr(1)) - of 'a'..'z': result = getIdent(c.cache, toLowerAscii(x.s[0]) & x.s.substr(1)) - else: result = x import std/editdistance, heapqueue diff --git a/compiler/main.nim b/compiler/main.nim index bc4b89147..364fba92e 100644 --- a/compiler/main.nim +++ b/compiler/main.nim @@ -417,7 +417,7 @@ proc mainCommand*(graph: ModuleGraph) = of cmdJsonscript: setOutFile(graph.config) commandJsonScript(graph) - of cmdUnknown, cmdNone, cmdIdeTools, cmdNimfix: + of cmdUnknown, cmdNone, cmdIdeTools: rawMessage(conf, errGenerated, "invalid command: " & conf.command) if conf.errorCounter == 0 and conf.cmd notin {cmdTcc, cmdDump, cmdNop}: diff --git a/compiler/nimfix/nimfix.nim b/compiler/nimfix/nimfix.nim deleted file mode 100644 index 30c138f79..000000000 --- a/compiler/nimfix/nimfix.nim +++ /dev/null @@ -1,111 +0,0 @@ -# -# -# The Nim Compiler -# (c) Copyright 2015 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -## Nimfix is a tool that helps to convert old-style Nimrod code to Nim code. - -import strutils, os, parseopt -import compiler/[options, commands, modules, sem, - passes, passaux, linter, - msgs, nimconf, - extccomp, condsyms, - modulegraphs, idents] - -const Usage = """ -Nimfix - Tool to patch Nim code -Usage: - nimfix [options] projectfile.nim - -Options: - --overwriteFiles:on|off overwrite the original nim files. - DEFAULT is ON! - --wholeProject overwrite every processed file. - --checkExtern:on|off style check also extern names - --styleCheck:on|off|auto performs style checking for identifiers - and suggests an alternative spelling; - 'auto' corrects the spelling. - --bestEffort try to fix the code even when there - are errors. - -In addition, all command line options of Nim are supported. -""" - -proc mainCommand = - registerPass verbosePass - registerPass semPass - conf.setCmd cmdNimfix - searchPaths.add options.libpath - if gProjectFull.len != 0: - # current path is always looked first for modules - searchPaths.insert(gProjectPath, 0) - - compileProject(newModuleGraph(), newIdentCache()) - pretty.overwriteFiles() - -proc processCmdLine*(pass: TCmdLinePass, cmd: string, config: ConfigRef) = - var p = parseopt.initOptParser(cmd) - var argsCount = 0 - gOnlyMainfile = true - while true: - parseopt.next(p) - case p.kind - of cmdEnd: break - of cmdLongoption, cmdShortOption: - case p.key.normalize - of "overwritefiles": - case p.val.normalize - of "on": gOverWrite = true - of "off": gOverWrite = false - else: localError(gCmdLineInfo, errOnOrOffExpected) - of "checkextern": - case p.val.normalize - of "on": gCheckExtern = true - of "off": gCheckExtern = false - else: localError(gCmdLineInfo, errOnOrOffExpected) - of "stylecheck": - case p.val.normalize - of "off": gStyleCheck = StyleCheck.None - of "on": gStyleCheck = StyleCheck.Warn - of "auto": gStyleCheck = StyleCheck.Auto - else: localError(gCmdLineInfo, errOnOrOffExpected) - of "wholeproject": gOnlyMainfile = false - of "besteffort": msgs.gErrorMax = high(int) # don't stop after first error - else: - processSwitch(pass, p, config) - of cmdArgument: - options.gProjectName = unixToNativePath(p.key) - # if processArgument(pass, p, argsCount): break - -proc handleCmdLine(config: ConfigRef) = - if paramCount() == 0: - stdout.writeLine(Usage) - else: - processCmdLine(passCmd1, "", config) - if gProjectName != "": - try: - gProjectFull = canonicalizePath(gProjectName) - except OSError: - gProjectFull = gProjectName - var p = splitFile(gProjectFull) - gProjectPath = p.dir - gProjectName = p.name - else: - gProjectPath = getCurrentDir() - loadConfigs(DefaultConfig, config) # load all config files - # now process command line arguments again, because some options in the - # command line can overwrite the config file's settings - extccomp.initVars() - processCmdLine(passCmd2, "", config) - mainCommand() - -when compileOption("gc", "refc"): - GC_disableMarkAndSweep() - -condsyms.initDefines() -defineSymbol "nimfix" -handleCmdline newConfigRef() diff --git a/compiler/nimfix/nimfix.nim.cfg b/compiler/nimfix/nimfix.nim.cfg deleted file mode 100644 index 0d9dbfa4b..000000000 --- a/compiler/nimfix/nimfix.nim.cfg +++ /dev/null @@ -1,17 +0,0 @@ -# Special configuration file for the Nim project -# gc:markAndSweep - -hint[XDeclaredButNotUsed]:off -path:"$projectPath/.." - -path:"$lib/packages/docutils" -path:"$nim" - -define:useStdoutAsStdmsg -symbol:nimfix -define:nimfix - -cs:partial -#define:useNodeIds -define:booting -define:noDocgen diff --git a/compiler/nimfix/prettybase.nim b/compiler/nimfix/prettybase.nim deleted file mode 100644 index b5a7ba42b..000000000 --- a/compiler/nimfix/prettybase.nim +++ /dev/null @@ -1,45 +0,0 @@ -# -# -# The Nim Compiler -# (c) Copyright 2015 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -import strutils except Letters -import ".." / [ast, msgs, lineinfos, idents, options, linter] - -proc replaceDeprecated*(conf: ConfigRef; info: TLineInfo; oldSym, newSym: PIdent) = - let line = sourceLine(conf, info) - var first = min(info.col.int, line.len) - if first < 0: return - #inc first, skipIgnoreCase(line, "proc ", first) - while first > 0 and line[first-1] in Letters: dec first - if first < 0: return - if line[first] == '`': inc first - - let last = first+identLen(line, first)-1 - if cmpIgnoreStyle(line[first..last], oldSym.s) == 0: - var x = line.substr(0, first-1) & newSym.s & line.substr(last+1) - when defined(gcArc) or defined(gcOrc) or defined(gcAtomicArc): - conf.m.fileInfos[info.fileIndex.int32].lines[info.line.int-1] = move x - else: - system.shallowCopy(conf.m.fileInfos[info.fileIndex.int32].lines[info.line.int-1], x) - conf.m.fileInfos[info.fileIndex.int32].dirty = true - #if newSym.s == "File": writeStackTrace() - -proc replaceDeprecated*(conf: ConfigRef; info: TLineInfo; oldSym, newSym: PSym) = - replaceDeprecated(conf, info, oldSym.name, newSym.name) - -proc replaceComment*(conf: ConfigRef; info: TLineInfo) = - let line = sourceLine(conf, info) - var first = info.col.int - if line[first] != '#': inc first - - var x = line.substr(0, first-1) & "discard " & line.substr(first+1).escape - when defined(gcArc) or defined(gcOrc) or defined(gcAtomicArc): - conf.m.fileInfos[info.fileIndex.int32].lines[info.line.int-1] = move x - else: - system.shallowCopy(conf.m.fileInfos[info.fileIndex.int32].lines[info.line.int-1], x) - conf.m.fileInfos[info.fileIndex.int32].dirty = true diff --git a/compiler/options.nim b/compiler/options.nim index e78dd72f2..7e9e37384 100644 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -166,7 +166,6 @@ type cmdInteractive # start interactive session cmdNop cmdJsonscript # compile a .json build file - cmdNimfix # old unused: cmdInterpret, cmdDef: def feature (find definition for IDEs) const diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index 440761815..b3ccaf224 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -174,9 +174,7 @@ proc setExternName(c: PContext; s: PSym, extname: string, info: TLineInfo) = localError(c.config, info, "invalid extern name: '" & extname & "'. (Forgot to escape '$'?)") when hasFFI: s.cname = $s.loc.r - if c.config.cmd == cmdNimfix and '$' notin extname: - # note that '{.importc.}' is transformed into '{.importc: "$1".}' - s.loc.flags.incl(lfFullExternalName) + proc makeExternImport(c: PContext; s: PSym, extname: string, info: TLineInfo) = setExternName(c, s, extname, info) @@ -249,7 +247,7 @@ proc processVirtual(c: PContext, n: PNode, s: PSym) = s.constraint = newEmptyStrNode(c, n, getOptionalStr(c, n, "$1")) s.constraint.strVal = s.constraint.strVal % s.name.s s.flags.incl {sfVirtual, sfInfixCall, sfExportc, sfMangleCpp} - + s.typ.callConv = ccNoConvention incl c.config.globalOptions, optMixedMode @@ -1281,7 +1279,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int, sym.flags.incl sfSystemRaisesDefect of wVirtual: processVirtual(c, it, sym) - + else: invalidPragma(c, it) elif comesFromPush and whichKeyword(ident) != wInvalid: discard "ignore the .push pragma; it doesn't apply" diff --git a/compiler/sem.nim b/compiler/sem.nim index e6d92d1f0..54ea38ef9 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -21,8 +21,6 @@ import lowerings, plugins/active, lineinfos, strtabs, int128, isolation_check, typeallowed, modulegraphs, enumtostr, concepts, astmsgs -when defined(nimfix): - import nimfix/prettybase when not defined(leanCompiler): import spawn diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 6b4e27394..53c0790fe 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -2614,7 +2614,7 @@ proc semSetConstr(c: PContext, n: PNode, expectedType: PType = nil): PNode = typ = makeRangeType(c, 0, MaxSetElements-1, n.info) elif isIntLit(typ): # set of int literal, use a default range smaller than the max range - typ = makeRangeType(c, 0, DefaultSetElements-1, n.info) + typ = makeRangeType(c, 0, DefaultSetElements-1, n.info) elif lengthOrd(c.config, typ) > MaxSetElements: message(c.config, n.info, warnAboveMaxSizeSet, "type '" & typeToString(typ, preferDesc) & "' is too big to be a `set` element, " & @@ -3107,8 +3107,6 @@ proc semExpr(c: PContext, n: PNode, flags: TExprFlags = {}, expectedType: PType c.isAmbiguous = false var s = qualifiedLookUp(c, n[0], mode) if s != nil: - #if c.config.cmd == cmdNimfix and n[0].kind == nkDotExpr: - # pretty.checkUse(n[0][1].info, s) case s.kind of skMacro, skTemplate: result = semDirectOp(c, n, flags, expectedType) diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index 4f4a545c5..b39361434 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -1655,11 +1655,11 @@ proc swapResult(n: PNode, sRes: PSym, dNode: PNode) = swapResult(n[i], sRes, dNode) -proc addThis(c: PContext, n: PNode, t: PType, owner: TSymKind) = +proc addThis(c: PContext, n: PNode, t: PType, owner: TSymKind) = var s = newSym(skResult, getIdent(c.cache, "this"), c.idgen, - getCurrOwner(c), n.info) + getCurrOwner(c), n.info) s.typ = t - incl(s.flags, sfUsed) + incl(s.flags, sfUsed) c.p.resultSym = s n.add newSymNode(c.p.resultSym) addParamOrResult(c, c.p.resultSym, owner) @@ -2198,17 +2198,17 @@ proc semProcAux(c: PContext, n: PNode, kind: TSymKind, if sfBorrow in s.flags and c.config.cmd notin cmdDocLike: result[bodyPos] = c.graph.emptyNode - + if {sfVirtual, sfConstructor} * s.flags != {} and sfImportc notin s.flags: let isVirtual = sfVirtual in s.flags let pragmaName = if isVirtual: "virtual" else: "constructor" if c.config.backend == backendCpp: if s.typ.sons.len < 2 and isVirtual: - localError(c.config, n.info, "virtual must have at least one parameter") + localError(c.config, n.info, "virtual must have at least one parameter") for son in s.typ.sons: if son!=nil and son.isMetaType: localError(c.config, n.info, pragmaName & " unsupported for generic routine") - var typ: PType + var typ: PType if sfConstructor in s.flags: typ = s.typ.sons[0] if typ == nil or typ.kind != tyObject: @@ -2222,7 +2222,7 @@ proc semProcAux(c: PContext, n: PNode, kind: TSymKind, if typ.owner.id == s.owner.id and c.module.id == s.owner.id: c.graph.memberProcsPerType.mgetOrPut(typ.itemId, @[]).add s else: - localError(c.config, n.info, + localError(c.config, n.info, pragmaName & " procs must be defined in the same scope as the type they are virtual for and it must be a top level scope") else: localError(c.config, n.info, pragmaName & " procs are only supported in C++") @@ -2577,12 +2577,6 @@ proc semStmtList(c: PContext, n: PNode, flags: TExprFlags, expectedType: PType = result[0].kind != nkDefer: result = result[0] - when defined(nimfix): - if result.kind == nkCommentStmt and not result.comment.isNil and - not (result.comment[0] == '#' and result.comment[1] == '#'): - # it is an old-style comment statement: we replace it with 'discard ""': - prettybase.replaceComment(result.info) - proc semStmt(c: PContext, n: PNode; flags: TExprFlags): PNode = if efInTypeof notin flags: result = semExprNoType(c, n) |