diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2017-04-17 17:59:49 +0200 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@gmail.com> | 2017-04-17 18:01:38 +0200 |
commit | 2108dcf0d5bb76b452abe6d1d13f91b6e944cb94 (patch) | |
tree | 39a48115309789eda36ea95533c9c7741563f721 /tests | |
parent | afb7542d208c3ad2c1bb4384c35c4efcd288a572 (diff) | |
download | Nim-2108dcf0d5bb76b452abe6d1d13f91b6e944cb94.tar.gz |
Fix JSON macro bug with ref objects.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/stdlib/tjsonmacro.nim | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/tests/stdlib/tjsonmacro.nim b/tests/stdlib/tjsonmacro.nim index 74b0d4dc3..f8ecd4637 100644 --- a/tests/stdlib/tjsonmacro.nim +++ b/tests/stdlib/tjsonmacro.nim @@ -159,11 +159,11 @@ when isMainModule: name: string age: int - Data = object + Data1 = object # TODO: Codegen bug when changed to ``Data``. person: Person list: seq[int] - var data = to(jsonNode, Data) + var data = to(jsonNode, Data1) doAssert data.person.name == "Nimmer" doAssert data.person.age == 21 doAssert data.list == @[1, 2, 3, 4] @@ -182,4 +182,30 @@ when isMainModule: } var result = to(node, TestEnum) - doAssert result.field == Bar \ No newline at end of file + doAssert result.field == Bar + + # Test ref type in field. + block: + let jsonNode = parseJson(""" + { + "person": { + "name": "Nimmer", + "age": 21 + }, + "list": [1, 2, 3, 4] + } + """) + + type + Person = ref object + name: string + age: int + + Data = object + person: Person + list: seq[int] + + var data = to(jsonNode, Data) + doAssert data.person.name == "Nimmer" + doAssert data.person.age == 21 + doAssert data.list == @[1, 2, 3, 4] \ No newline at end of file |