Skip to content

Commit

Permalink
fixes json.nim regression
Browse files Browse the repository at this point in the history
  • Loading branch information
Araq committed Mar 29, 2019
1 parent dafd995 commit f8e720f
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 16 deletions.
17 changes: 5 additions & 12 deletions lib/pure/json.nim
Original file line number Diff line number Diff line change
Expand Up @@ -390,18 +390,10 @@ proc `[]=`*(obj: JsonNode, key: string, val: JsonNode) {.inline.} =
assert(obj.kind == JObject)
obj.fields[key] = val

proc `%`*[T: tuple|object](o: T): JsonNode =
proc `%`*[T: object](o: T): JsonNode =
## Construct JsonNode from tuples and objects.
##
## If passed an anonymous tuple, creates `JArray JsonNode`,
## otherwise (named tuples and objects) `JObject JsonNode`.
const isNamed = T is object or isNamedTuple(T)
when isNamed:
result = newJObject()
for k, v in o.fieldPairs: result[k] = %v
else:
result = newJArray()
for a in o.fields: result.add(%a)
result = newJObject()
for k, v in o.fieldPairs: result[k] = %v

proc `%`*(o: ref object): JsonNode =
## Generic constructor for JSON data. Creates a new `JObject JsonNode`
Expand Down Expand Up @@ -1718,7 +1710,6 @@ when isMainModule:

# Test loading of file.
when not defined(js):
echo("99% of tests finished. Going to try loading file.")
var parsed = parseFile("tests/testdata/jsontest.json")

try:
Expand Down Expand Up @@ -1752,6 +1743,8 @@ when isMainModule:
doAssert($ %*[] == "[]")
doAssert($ %*{} == "{}")

doAssert(not compiles(%{"error": "No messages"}))

# bug #9111
block:
type
Expand Down
4 changes: 0 additions & 4 deletions tests/stdlib/tjsonmacro.nim
Original file line number Diff line number Diff line change
Expand Up @@ -517,10 +517,6 @@ when true:
doAssert v.name == "smith"
doAssert MyRef(w).name == "smith"

block test_tuple:
doAssert $(%* (a1: 10, a2: "foo")) == """{"a1":10,"a2":"foo"}"""
doAssert $(%* (10, "foo")) == """[10,"foo"]"""

# TODO: when the issue with the limeted vm registers is solved, the
# exact same test as above should be evaluated at compile time as
# well, to ensure that the vm functionality won't diverge from the
Expand Down

0 comments on commit f8e720f

Please sign in to comment.