Hopefully fixes nimsuggest building against the compiler package.
This commit is contained in:
parent
c53f65f1e7
commit
2d9a24f3f6
4 changed files with 25 additions and 19 deletions
|
|
@ -10,8 +10,10 @@
|
||||||
## Nimfix is a tool that helps to convert old-style Nimrod code to Nim code.
|
## Nimfix is a tool that helps to convert old-style Nimrod code to Nim code.
|
||||||
|
|
||||||
import strutils, os, parseopt
|
import strutils, os, parseopt
|
||||||
import options, commands, modules, sem, passes, passaux, pretty, msgs, nimconf,
|
import compiler/options, compiler/commands, compiler/modules, compiler/sem,
|
||||||
extccomp, condsyms, lists
|
compiler/passes, compiler/passaux, compiler/nimfix/pretty,
|
||||||
|
compiler/msgs, compiler/nimconf,
|
||||||
|
compiler/extccomp, compiler/condsyms, compiler/lists
|
||||||
|
|
||||||
const Usage = """
|
const Usage = """
|
||||||
Nimfix - Tool to patch Nim code
|
Nimfix - Tool to patch Nim code
|
||||||
|
|
@ -24,7 +26,7 @@ Options:
|
||||||
--wholeProject overwrite every processed file.
|
--wholeProject overwrite every processed file.
|
||||||
--checkExtern:on|off style check also extern names
|
--checkExtern:on|off style check also extern names
|
||||||
--styleCheck:on|off|auto performs style checking for identifiers
|
--styleCheck:on|off|auto performs style checking for identifiers
|
||||||
and suggests an alternative spelling;
|
and suggests an alternative spelling;
|
||||||
'auto' corrects the spelling.
|
'auto' corrects the spelling.
|
||||||
--bestEffort try to fix the code even when there
|
--bestEffort try to fix the code even when there
|
||||||
are errors.
|
are errors.
|
||||||
|
|
@ -48,11 +50,11 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string) =
|
||||||
var p = parseopt.initOptParser(cmd)
|
var p = parseopt.initOptParser(cmd)
|
||||||
var argsCount = 0
|
var argsCount = 0
|
||||||
gOnlyMainfile = true
|
gOnlyMainfile = true
|
||||||
while true:
|
while true:
|
||||||
parseopt.next(p)
|
parseopt.next(p)
|
||||||
case p.kind
|
case p.kind
|
||||||
of cmdEnd: break
|
of cmdEnd: break
|
||||||
of cmdLongoption, cmdShortOption:
|
of cmdLongoption, cmdShortOption:
|
||||||
case p.key.normalize
|
case p.key.normalize
|
||||||
of "overwritefiles":
|
of "overwritefiles":
|
||||||
case p.val.normalize
|
case p.val.normalize
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,11 @@
|
||||||
## This module implements the code "prettifier". This is part of the toolchain
|
## This module implements the code "prettifier". This is part of the toolchain
|
||||||
## to convert Nim code into a consistent style.
|
## to convert Nim code into a consistent style.
|
||||||
|
|
||||||
import
|
import
|
||||||
strutils, os, options, ast, astalgo, msgs, ropes, idents,
|
strutils, os, intsets, strtabs
|
||||||
intsets, strtabs, semdata, prettybase
|
|
||||||
|
import compiler/options, compiler/ast, compiler/astalgo, compiler/msgs,
|
||||||
|
compiler/semdata, compiler/nimfix/prettybase, compiler/ropes, compiler/idents
|
||||||
|
|
||||||
type
|
type
|
||||||
StyleCheck* {.pure.} = enum None, Warn, Auto
|
StyleCheck* {.pure.} = enum None, Warn, Auto
|
||||||
|
|
@ -92,7 +94,7 @@ proc beautifyName(s: string, k: TSymKind): string =
|
||||||
|
|
||||||
proc replaceInFile(info: TLineInfo; newName: string) =
|
proc replaceInFile(info: TLineInfo; newName: string) =
|
||||||
loadFile(info)
|
loadFile(info)
|
||||||
|
|
||||||
let line = gSourceFiles[info.fileIndex].lines[info.line-1]
|
let line = gSourceFiles[info.fileIndex].lines[info.line-1]
|
||||||
var first = min(info.col.int, line.len)
|
var first = min(info.col.int, line.len)
|
||||||
if first < 0: return
|
if first < 0: return
|
||||||
|
|
@ -100,18 +102,18 @@ proc replaceInFile(info: TLineInfo; newName: string) =
|
||||||
while first > 0 and line[first-1] in prettybase.Letters: dec first
|
while first > 0 and line[first-1] in prettybase.Letters: dec first
|
||||||
if first < 0: return
|
if first < 0: return
|
||||||
if line[first] == '`': inc first
|
if line[first] == '`': inc first
|
||||||
|
|
||||||
let last = first+identLen(line, first)-1
|
let last = first+identLen(line, first)-1
|
||||||
if differ(line, first, last, newName):
|
if differ(line, first, last, newName):
|
||||||
# last-first+1 != newName.len or
|
# last-first+1 != newName.len or
|
||||||
var x = line.substr(0, first-1) & newName & line.substr(last+1)
|
var x = line.substr(0, first-1) & newName & line.substr(last+1)
|
||||||
system.shallowCopy(gSourceFiles[info.fileIndex].lines[info.line-1], x)
|
system.shallowCopy(gSourceFiles[info.fileIndex].lines[info.line-1], x)
|
||||||
gSourceFiles[info.fileIndex].dirty = true
|
gSourceFiles[info.fileIndex].dirty = true
|
||||||
|
|
||||||
proc checkStyle(info: TLineInfo, s: string, k: TSymKind; sym: PSym) =
|
proc checkStyle(info: TLineInfo, s: string, k: TSymKind; sym: PSym) =
|
||||||
let beau = beautifyName(s, k)
|
let beau = beautifyName(s, k)
|
||||||
if s != beau:
|
if s != beau:
|
||||||
if gStyleCheck == StyleCheck.Auto:
|
if gStyleCheck == StyleCheck.Auto:
|
||||||
sym.name = getIdent(beau)
|
sym.name = getIdent(beau)
|
||||||
replaceInFile(info, beau)
|
replaceInFile(info, beau)
|
||||||
else:
|
else:
|
||||||
|
|
@ -137,7 +139,7 @@ proc styleCheckUseImpl(info: TLineInfo; s: PSym) =
|
||||||
if info.fileIndex < 0: return
|
if info.fileIndex < 0: return
|
||||||
# we simply convert it to what it looks like in the definition
|
# we simply convert it to what it looks like in the definition
|
||||||
# for consistency
|
# for consistency
|
||||||
|
|
||||||
# operators stay as they are:
|
# operators stay as they are:
|
||||||
if s.kind in {skResult, skTemp} or s.name.s[0] notin prettybase.Letters:
|
if s.kind in {skResult, skTemp} or s.name.s[0] notin prettybase.Letters:
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
# distribution, for details about the copyright.
|
# distribution, for details about the copyright.
|
||||||
#
|
#
|
||||||
|
|
||||||
import ast, msgs, strutils, idents, lexbase, streams
|
import strutils, lexbase, streams
|
||||||
|
import compiler/ast, compiler/msgs, compiler/idents
|
||||||
from os import splitFile
|
from os import splitFile
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
@ -39,7 +40,7 @@ proc loadFile*(info: TLineInfo) =
|
||||||
var pos = lex.bufpos
|
var pos = lex.bufpos
|
||||||
while true:
|
while true:
|
||||||
case lex.buf[pos]
|
case lex.buf[pos]
|
||||||
of '\c':
|
of '\c':
|
||||||
gSourceFiles[i].newline = "\c\L"
|
gSourceFiles[i].newline = "\c\L"
|
||||||
break
|
break
|
||||||
of '\L', '\0':
|
of '\L', '\0':
|
||||||
|
|
@ -70,7 +71,7 @@ proc replaceDeprecated*(info: TLineInfo; oldSym, newSym: PIdent) =
|
||||||
while first > 0 and line[first-1] in Letters: dec first
|
while first > 0 and line[first-1] in Letters: dec first
|
||||||
if first < 0: return
|
if first < 0: return
|
||||||
if line[first] == '`': inc first
|
if line[first] == '`': inc first
|
||||||
|
|
||||||
let last = first+identLen(line, first)-1
|
let last = first+identLen(line, first)-1
|
||||||
if cmpIgnoreStyle(line[first..last], oldSym.s) == 0:
|
if cmpIgnoreStyle(line[first..last], oldSym.s) == 0:
|
||||||
var x = line.substr(0, first-1) & newSym.s & line.substr(last+1)
|
var x = line.substr(0, first-1) & newSym.s & line.substr(last+1)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
|
|
||||||
## The builtin 'system.locals' implemented as a plugin.
|
## The builtin 'system.locals' implemented as a plugin.
|
||||||
|
|
||||||
import plugins, ast, astalgo, magicsys, lookups, semdata, lowerings
|
import compiler/plugins, compiler/ast, compiler/astalgo, compiler/magicsys,
|
||||||
|
compiler/lookups, compiler/semdata, compiler/lowerings
|
||||||
|
|
||||||
proc semLocals(c: PContext, n: PNode): PNode =
|
proc semLocals(c: PContext, n: PNode): PNode =
|
||||||
var counter = 0
|
var counter = 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue