summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--.travis.yml2
-rw-r--r--ci/build.sh2
-rw-r--r--ci/deps.sh2
-rw-r--r--compiler/renderer.nim8
-rw-r--r--compiler/semexprs.nim21
-rw-r--r--doc/astspec.txt2
-rw-r--r--koch.nim4
-rw-r--r--lib/pure/strformat.nim5
-rw-r--r--tests/testament/categories.nim2
10 files changed, 28 insertions, 22 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 76c94c8e7..c37b4c8d4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,7 +8,7 @@ stages:
 
 .linux_set_path: &linux_set_path_def
   before_script:
-    - export PATH=$(pwd)/bin:$PATH
+    - export PATH=$(pwd)/bin${PATH:+:$PATH}
   tags:
     - linux
 
diff --git a/.travis.yml b/.travis.yml
index 6b8cdbe03..a3fa3f1da 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,7 +30,7 @@ before_script:
   - sh build.sh
   - cd ..
   - sed -i -e 's,cc = gcc,cc = clang,' config/nim.cfg
-  - export PATH=$(pwd)/bin:$PATH
+  - export PATH=$(pwd)/bin${PATH:+:$PATH}
 script:
   - nim c koch
   - ./koch boot
diff --git a/ci/build.sh b/ci/build.sh
index a0fee1497..6321fffba 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -6,7 +6,7 @@ cd csources
 sh build.sh
 cd ..
 # Add Nim to the PATH
-export PATH=$(pwd)/bin:$PATH
+export PATH=$(pwd)/bin${PATH:+:$PATH}
 # Bootstrap.
 nim -v
 nim c koch
diff --git a/ci/deps.sh b/ci/deps.sh
index 7471785a0..f0f831a2a 100644
--- a/ci/deps.sh
+++ b/ci/deps.sh
@@ -7,7 +7,7 @@ apt-get install -y -qq build-essential git libcurl4-openssl-dev libsdl1.2-dev li
 
 gcc -v
 
-export PATH=$(pwd)/bin:$PATH
+export PATH=$(pwd)/bin${PATH:+:$PATH}
 
 # Nimble deps
 nim e install_nimble.nims
diff --git a/compiler/renderer.nim b/compiler/renderer.nim
index 4afaf859d..fa93c968a 100644
--- a/compiler/renderer.nim
+++ b/compiler/renderer.nim
@@ -898,6 +898,14 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
       put(g, tkBracketLe, "[")
       gcomma(g, n, 2)
       put(g, tkBracketRi, "]")
+    elif n.len > 1 and n.lastSon.kind == nkStmtList:
+      gsub(g, n[0])
+      if n.len > 2:
+        put(g, tkParLe, "(")
+        gcomma(g, n, 1, -2)
+        put(g, tkParRi, ")")
+      put(g, tkColon, ":")
+      gsub(g, n, n.len-1)
     else:
       if sonsLen(n) >= 1: gsub(g, n.sons[0])
       put(g, tkParLe, "(")
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index 795fa1910..62489bd36 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -1876,17 +1876,16 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode =
         result = magicsAfterOverloadResolution(c, result, flags)
   of mRunnableExamples:
     if gCmd == cmdDoc and n.len >= 2 and n.lastSon.kind == nkStmtList:
-      if n.sons[0].kind == nkIdent:
-        if sfMainModule in c.module.flags:
-          let inp = toFullPath(c.module.info)
-          if c.runnableExamples == nil:
-            c.runnableExamples = newTree(nkStmtList,
-              newTree(nkImportStmt, newStrNode(nkStrLit, expandFilename(inp))))
-          let imports = newTree(nkStmtList)
-          extractImports(n.lastSon, imports)
-          for imp in imports: c.runnableExamples.add imp
-          c.runnableExamples.add newTree(nkBlockStmt, emptyNode, copyTree n.lastSon)
-        result = setMs(n, s)
+      if sfMainModule in c.module.flags:
+        let inp = toFullPath(c.module.info)
+        if c.runnableExamples == nil:
+          c.runnableExamples = newTree(nkStmtList,
+            newTree(nkImportStmt, newStrNode(nkStrLit, expandFilename(inp))))
+        let imports = newTree(nkStmtList)
+        extractImports(n.lastSon, imports)
+        for imp in imports: c.runnableExamples.add imp
+        c.runnableExamples.add newTree(nkBlockStmt, emptyNode, copyTree n.lastSon)
+      result = setMs(n, s)
     else:
       result = emptyNode
   else:
diff --git a/doc/astspec.txt b/doc/astspec.txt
index 57f6b9d8c..6d755c2e2 100644
--- a/doc/astspec.txt
+++ b/doc/astspec.txt
@@ -918,7 +918,7 @@ This is equivalent to ``var``, but with ``nnkLetSection`` rather than
 Concrete syntax:
 
 .. code-block:: nim
-  let v = 3
+  let a = 3
 
 AST:
 
diff --git a/koch.nim b/koch.nim
index 7bb7ea402..d51b902ee 100644
--- a/koch.nim
+++ b/koch.nim
@@ -97,7 +97,7 @@ proc exec(cmd: string, errorcode: int = QuitFailure, additionalPath = "") =
     if not absolute.isAbsolute:
       absolute = getCurrentDir() / absolute
     echo("Adding to $PATH: ", absolute)
-    putEnv("PATH", prevPath & PathSep & absolute)
+    putEnv("PATH", (if prevPath.len > 0: prevPath & PathSep else: "") & absolute)
   echo(cmd)
   if execShellCmd(cmd) != 0: quit("FAILURE", errorcode)
   putEnv("PATH", prevPath)
@@ -402,7 +402,7 @@ proc winReleaseArch(arch: string) =
 
   template withMingw(path, body) =
     let prevPath = getEnv("PATH")
-    putEnv("PATH", path & PathSep & prevPath)
+    putEnv("PATH", (if path.len > 0: path & PathSep else: "") & prevPath)
     try:
       body
     finally:
diff --git a/lib/pure/strformat.nim b/lib/pure/strformat.nim
index 180cbcbec..e04c80794 100644
--- a/lib/pure/strformat.nim
+++ b/lib/pure/strformat.nim
@@ -224,7 +224,7 @@ template callFormatOption(res, arg, option) {.dirty.} =
   else:
     res.add format(arg, option)
 
-macro fmt*(pattern: string): untyped =
+macro fmt*(pattern: string{lit}): untyped =
   ## For a specification of the ``fmt`` macro, see the module level documentation.
   runnableExamples:
     template check(actual, expected: string) =
@@ -332,7 +332,7 @@ macro fmt*(pattern: string): untyped =
     # works:
     import times
 
-    var nullTime: TimeInfo
+    var nullTime: DateTime
     check fmt"{nullTime:yyyy-mm-dd}", "0000-00-00"
 
     # Unicode string tests
@@ -609,7 +609,6 @@ proc format*(value: string; specifier: string; res: var string) =
   ## sense to call this directly, but it is required to exist
   ## by the ``fmt`` macro.
   let spec = parseStandardFormatSpecifier(specifier)
-  var fmode = ffDefault
   case spec.typ
   of 's', '\0': discard
   else:
diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim
index 33b93e3c4..42e19d3dd 100644
--- a/tests/testament/categories.nim
+++ b/tests/testament/categories.nim
@@ -90,7 +90,7 @@ proc runBasicDLLTest(c, r: var TResults, cat: Category, options: string) =
     # posix relies on crappy LD_LIBRARY_PATH (ugh!):
     var libpath = getEnv"LD_LIBRARY_PATH".string
     # Temporarily add the lib directory to LD_LIBRARY_PATH:
-    putEnv("LD_LIBRARY_PATH", "tests/dll:" & libpath)
+    putEnv("LD_LIBRARY_PATH", "tests/dll" & (if libpath.len > 0: ":" & libpath else: ""))
     defer: putEnv("LD_LIBRARY_PATH", libpath)
     var nimrtlDll = DynlibFormat % "nimrtl"
     safeCopyFile("lib" / nimrtlDll, "tests/dll" / nimrtlDll)