summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@gmail.com>2017-04-09 17:22:40 +0200
committerDominik Picheta <dominikpicheta@gmail.com>2017-04-09 17:22:40 +0200
commit88cb40cd31d3cf2ebaa2a1c284c335601208db0d (patch)
tree64cbe061208b343361bd86acb7870c4bd05be1f7 /lib
parentbd58a0d67ca9fdf45dca1e1a0922267d205fdedb (diff)
downloadNim-88cb40cd31d3cf2ebaa2a1c284c335601208db0d.tar.gz
Implement support for enum fields in JSON macro.
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/json.nim8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index cde6c5713..b3fc47749 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -1421,7 +1421,6 @@ proc processElseBranch(recCaseNode, elseBranch, jsonNode, kindType,
   ##     RecList
   ##       Sym "other"
   result = @[]
-  # TODO: Remove duplication between processOfBranch
   let getEnumCall = createGetEnumCall(kindJsonNode, kindType)
 
   # We need to build up a list of conditions from each ``of`` branch so that
@@ -1525,6 +1524,13 @@ proc processType(typeName: NimNode, obj: NimNode,
     for field in obj[2]:
       let nodes = processObjField(field, jsonNode)
       result.add(nodes)
+  of nnkEnumTy:
+    let instType = toIdentNode(getTypeInst(typeName))
+    let getEnumCall = createGetEnumCall(jsonNode, instType)
+    result = quote do:
+      (
+        `getEnumCall`
+      )
   of nnkSym:
     case ($typeName).normalize
     of "float":