summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/importer.nim26
-rw-r--r--compiler/lookups.nim4
-rw-r--r--compiler/nimfix/nimfix.nim10
3 files changed, 26 insertions, 14 deletions
diff --git a/compiler/importer.nim b/compiler/importer.nim
index feebf97c4..615d01693 100644
--- a/compiler/importer.nim
+++ b/compiler/importer.nim
@@ -186,16 +186,28 @@ proc myImportModule(c: PContext, n: PNode): PSym =
       message(n.info, warnDeprecated, result.name.s)
     #suggestSym(n.info, result, false)
 
+proc impMod(c: PContext; it: PNode) =
+  let m = myImportModule(c, it)
+  if m != nil:
+    var emptySet: IntSet
+    # ``addDecl`` needs to be done before ``importAllSymbols``!
+    addDecl(c, m, it.info) # add symbol to symbol table of module
+    importAllSymbolsExcept(c, m, emptySet)
+    #importForwarded(c, m.ast, emptySet)
+
 proc evalImport(c: PContext, n: PNode): PNode =
   result = n
-  var emptySet: IntSet
   for i in countup(0, sonsLen(n) - 1):
-    var m = myImportModule(c, n.sons[i])
-    if m != nil:
-      # ``addDecl`` needs to be done before ``importAllSymbols``!
-      addDecl(c, m, n.info)             # add symbol to symbol table of module
-      importAllSymbolsExcept(c, m, emptySet)
-      #importForwarded(c, m.ast, emptySet)
+    let it = n.sons[i]
+    if it.kind == nkInfix and it.len == 3 and it[2].kind == nkBracket:
+      let sep = renderTree(it.sons[0], {renderNoComments})
+      let dir = renderTree(it.sons[1], {renderNoComments})
+      for x in it[2]:
+        let f = renderTree(x, {renderNoComments})
+        let a = newStrNode(nkStrLit, (dir & sep & f).replace(" "))
+        impMod(c, a)
+    else:
+      impMod(c, it)
 
 proc evalFrom(c: PContext, n: PNode): PNode =
   result = n
diff --git a/compiler/lookups.nim b/compiler/lookups.nim
index fe159011c..61ecdb24b 100644
--- a/compiler/lookups.nim
+++ b/compiler/lookups.nim
@@ -216,8 +216,8 @@ when defined(nimfix):
   # when we cannot find the identifier, retry with a changed identifer:
   proc altSpelling(x: PIdent): PIdent =
     case x.s[0]
-    of 'A'..'Z': result = getIdent(toLower(x.s[0]) & x.s.substr(1))
-    of 'a'..'z': result = getIdent(toLower(x.s[0]) & x.s.substr(1))
+    of 'A'..'Z': result = getIdent(toLowerAscii(x.s[0]) & x.s.substr(1))
+    of 'a'..'z': result = getIdent(toLowerAscii(x.s[0]) & x.s.substr(1))
     else: result = x
 
   template fixSpelling(n: PNode; ident: PIdent; op: untyped) =
diff --git a/compiler/nimfix/nimfix.nim b/compiler/nimfix/nimfix.nim
index d1cf9615d..4afb16912 100644
--- a/compiler/nimfix/nimfix.nim
+++ b/compiler/nimfix/nimfix.nim
@@ -10,11 +10,11 @@
 ## Nimfix is a tool that helps to convert old-style Nimrod code to Nim code.
 
 import strutils, os, parseopt
-import compiler/options, compiler/commands, compiler/modules, compiler/sem,
-  compiler/passes, compiler/passaux, compiler/nimfix/pretty,
-  compiler/msgs, compiler/nimconf,
-  compiler/extccomp, compiler/condsyms, compiler/lists,
-  compiler/modulegraphs, compiler/idents
+import compiler/[options, commands, modules, sem,
+  passes, passaux, nimfix/pretty,
+  msgs, nimconf,
+  extccomp, condsyms, lists,
+  modulegraphs, idents]
 
 const Usage = """
 Nimfix - Tool to patch Nim code