summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/main.nim1
-rw-r--r--compiler/pretty.nim20
2 files changed, 14 insertions, 7 deletions
diff --git a/compiler/main.nim b/compiler/main.nim
index d8d8dc8db..6df21f660 100644
--- a/compiler/main.nim
+++ b/compiler/main.nim
@@ -170,6 +170,7 @@ proc CommandPrettyOld =
     renderModule(module, getOutFile(mainCommandArg(), "pretty." & NimExt))
 
 proc CommandPretty =
+  msgs.gErrorMax = high(int)  # do not stop after first error
   semanticPasses()
   registerPass(prettyPass)
   compileProject()
diff --git a/compiler/pretty.nim b/compiler/pretty.nim
index 92de96755..3d59f7e36 100644
--- a/compiler/pretty.nim
+++ b/compiler/pretty.nim
@@ -25,12 +25,13 @@ type
     fullpath: string
 
 var
-  gSourceFiles: seq[TSourceFile]
+  gSourceFiles: seq[TSourceFile] = @[]
 
 proc loadFile(info: TLineInfo) =
   let i = info.fileIndex
   if i >= gSourceFiles.len:
-    gSourceFiles.setLen(i)
+    gSourceFiles.setLen(i+1)
+  if gSourceFiles[i].lines.isNil:
     gSourceFiles[i].lines = @[]
     let path = info.toFullPath
     gSourceFiles[i].fullpath = path
@@ -80,11 +81,14 @@ proc identLen(line: string, start: int): int =
     inc result
 
 proc differ(line: string, a, b: int, x: string): bool =
-  var j = 0
-  for i in a..b:
-    if line[i] != x[j]: return true
-    inc j
-  return false
+  let y = line[a..b]
+  result = cmpIgnoreStyle(y, x) == 0 and y != x
+  when false:
+    var j = 0
+    for i in a..b:
+      if line[i] != x[j]: return true
+      inc j
+    return false
 
 var cannotRename = initIntSet()
 
@@ -106,6 +110,8 @@ proc processSym(c: PPassContext, n: PNode): PNode =
     
     let line = gSourceFiles[n.info.fileIndex].lines[n.info.line-1]
     var first = n.info.col.int - len(s.name.s)
+    if first < 0: return
+    #inc first, skipIgnoreCase(line, "proc ", first)
     if line[first] == '`': inc first
     
     if {sfImportc, sfExportc} * s.flags != {}: