diff --git a/lib/system.nim b/lib/system.nim index e7308f5d3..222ed9d8d 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1653,11 +1653,13 @@ proc `$`*[T: tuple|object](x: T): string = ## $(23, 45) == "(23, 45)" ## $() == "()" result = "(" + var firstElement = true for name, value in fieldPairs(x): - if result.len > 1: result.add(", ") + if not(firstElement): result.add(", ") result.add(name) result.add(": ") result.add($value) + firstElement = false result.add(")") proc `$`*[T: set](x: T): string = @@ -1667,9 +1669,11 @@ proc `$`*[T: set](x: T): string = ## .. code-block:: nimrod ## ${23, 45} == "{23, 45}" result = "{" + var firstElement = true for value in items(x): - if result.len > 1: result.add(", ") + if not(firstElement): result.add(", ") result.add($value) + firstElement = false result.add("}") proc `$`*[T: seq](x: T): string = @@ -1679,9 +1683,11 @@ proc `$`*[T: seq](x: T): string = ## .. code-block:: nimrod ## $(@[23, 45]) == "@[23, 45]" result = "@[" + var firstElement = true for value in items(x): - if result.len > 2: result.add(", ") + if not(firstElement): result.add(", ") result.add($value) + firstElement = false result.add("]") when false: diff --git a/tests/system/toString.nim b/tests/system/toString.nim index 2a8ce1c0c..24dd903c0 100644 --- a/tests/system/toString.nim +++ b/tests/system/toString.nim @@ -1,5 +1,7 @@ discard """ - output:'''@[23, 45]''' + output:'''@[23, 45] +@[, \"foo\", \"bar\"]''' """ echo($(@[23, 45])) +echo($(@["", "foo", "bar"]))