diff options
author | metagn <metagngn@gmail.com> | 2022-08-24 10:44:16 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-24 09:44:16 +0200 |
commit | b8dc58d8843af7dbd0ee2f3274e0d4cf18391dd2 (patch) | |
tree | 78c2cf31185875c855de1f1457daaefbaadd930e /lib/system/dollars.nim | |
parent | 9d9ecc3c1d774a71b4b866d7e503b25c307e7cbf (diff) | |
download | Nim-b8dc58d8843af7dbd0ee2f3274e0d4cf18391dd2.tar.gz |
test removing dollar for objects out of system (#20242)
* test removing dollar for objects out of system * test & fixes * fix bootstrap * use nimPreviewSlimSystem, test stdlib category * fix test
Diffstat (limited to 'lib/system/dollars.nim')
-rw-r--r-- | lib/system/dollars.nim | 46 |
1 files changed, 6 insertions, 40 deletions
diff --git a/lib/system/dollars.nim b/lib/system/dollars.nim index 46085d2aa..b060aedb0 100644 --- a/lib/system/dollars.nim +++ b/lib/system/dollars.nim @@ -3,7 +3,7 @@ runnableExamples: assert $0.1 == "0.1" assert $(-2*3) == "-6" -import std/private/digitsutils +import std/private/[digitsutils, miscdollars] import system/formatfloat export addFloat @@ -69,24 +69,7 @@ proc `$`*(t: typedesc): string {.magic: "TypeTrait".} ## doAssert $(typeof("Foo")) == "string" ## static: doAssert $(typeof(@['A', 'B'])) == "seq[char]" -when defined(nimHasIsNamedTuple): - proc isNamedTuple(T: typedesc): bool {.magic: "TypeTrait".} -else: - # for bootstrap; remove after release 1.2 - proc isNamedTuple(T: typedesc): bool = - # Taken from typetraits. - when T isnot tuple: result = false - else: - var t: T - for name, _ in t.fieldPairs: - when name == "Field0": - return compiles(t.Field0) - else: - return true - return false - - -proc `$`*[T: tuple|object](x: T): string = +proc `$`*[T: tuple](x: T): string = ## Generic `$` operator for tuples that is lifted from the components ## of `x`. Example: ## @@ -94,28 +77,11 @@ proc `$`*[T: tuple|object](x: T): string = ## $(23, 45) == "(23, 45)" ## $(a: 23, b: 45) == "(a: 23, b: 45)" ## $() == "()" - result = "(" - const isNamed = T is object or isNamedTuple(T) - var count {.used.} = 0 - for name, value in fieldPairs(x): - if count > 0: result.add(", ") - when isNamed: - result.add(name) - result.add(": ") - count.inc - when compiles($value): - when value isnot string and value isnot seq and compiles(value.isNil): - if value.isNil: result.add "nil" - else: result.addQuoted(value) - else: - result.addQuoted(value) - else: - result.add("...") - when not isNamed: - if count == 1: - result.add(",") # $(1,) should print as the semantically legal (1,) - result.add(")") + tupleObjectDollar(result, x) +when not defined(nimPreviewSlimSystem): + import std/objectdollar + export objectdollar proc collectionToString[T](x: T, prefix, separator, suffix: string): string = result = prefix |