summary refs log tree commit diff stats
diff options
context:
space:
mode:
authordef <dennis@felsin9.de>2016-02-06 03:29:09 +0100
committerdef <dennis@felsin9.de>2016-02-06 03:29:09 +0100
commit11f055c652afbc0ef48ece52b2542c08c58c9961 (patch)
treec4767e5217e3a2207fe97584cb74ceda99717ff9
parent4610cb3ae9c41237e662faf30a340a61fac51d1a (diff)
downloadNim-11f055c652afbc0ef48ece52b2542c08c58c9961.tar.gz
Fix json.`%*` for empty objects
-rw-r--r--lib/pure/json.nim10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index ab7d18bd8..f672a0c1b 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -712,17 +712,21 @@ proc `%`*(elements: openArray[JsonNode]): JsonNode =
 
 proc toJson(x: NimNode): NimNode {.compiletime.} =
   case x.kind
-  of nnkBracket:
+  of nnkBracket: # array
     result = newNimNode(nnkBracket)
     for i in 0 .. <x.len:
       result.add(toJson(x[i]))
 
-  of nnkTableConstr:
+  of nnkTableConstr: # object
     result = newNimNode(nnkTableConstr)
     for i in 0 .. <x.len:
-      assert x[i].kind == nnkExprColonExpr
+      x[i].expectKind nnkExprColonExpr
       result.add(newNimNode(nnkExprColonExpr).add(x[i][0]).add(toJson(x[i][1])))
 
+  of nnkCurly: # empty object
+    result = newNimNode(nnkTableConstr)
+    x.expectLen(0)
+
   else:
     result = x