diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2017-04-09 17:22:40 +0200 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@gmail.com> | 2017-04-09 17:22:40 +0200 |
commit | 88cb40cd31d3cf2ebaa2a1c284c335601208db0d (patch) | |
tree | 64cbe061208b343361bd86acb7870c4bd05be1f7 /lib | |
parent | bd58a0d67ca9fdf45dca1e1a0922267d205fdedb (diff) | |
download | Nim-88cb40cd31d3cf2ebaa2a1c284c335601208db0d.tar.gz |
Implement support for enum fields in JSON macro.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/json.nim | 8 |
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": |