Skip to content

Commit

Permalink
typetraits.$: $((int, float), int) is now "((int, float), int)"` in…
Browse files Browse the repository at this point in the history
…stead of `"(tuple of (int, float), int)" (#14812)

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
  • Loading branch information
timotheecour and Araq authored Jul 2, 2020
1 parent dc5a40f commit a6cbe58
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 12 deletions.
4 changes: 3 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,9 @@
- `macros.newLit` now preserves named vs unnamed tuples; use `-d:nimHasWorkaround14720` to keep old behavior
- Add `random.gauss`, that uses the ratio of uniforms method of sampling from a Gaussian distribution.
- Add `typetraits.elementType` to get element type of an iterable.
- `typetraits.$`: `$(int,)` is now `"(int,)"`; `$tuple[]` is now `"tuple[]"`
- `typetraits.$` changes: `$(int,)` is now `"(int,)"` instead of `"(int)"`;
`$tuple[]` is now `"tuple[]"` instead of `"tuple"`;
`$((int, float), int)` is now `"((int, float), int)"` instead of `"(tuple of (int, float), int)"`
- add `macros.extractDocCommentsAndRunnables` helper

- `strformat.fmt` and `strformat.&` support `= specifier`. `fmt"{expr=}"` now expands to `fmt"expr={expr}"`.
Expand Down
3 changes: 1 addition & 2 deletions compiler/types.nim
Original file line number Diff line number Diff line change
Expand Up @@ -636,8 +636,7 @@ proc typeToString(typ: PType, prefer: TPreferedDesc = preferName): string =
elif t.len == 0:
result = "tuple[]"
else:
if prefer == preferTypeName: result = "("
else: result = "tuple of ("
result = "("
for i in 0..<t.len:
result.add(typeToString(t[i]))
if i < t.len - 1: result.add(", ")
Expand Down
2 changes: 1 addition & 1 deletion tests/errmsgs/tnested_empty_seq.nim
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
discard """
errormsg: "invalid type: 'empty' in this context: 'array[0..0, tuple of (string, seq[empty])]' for var"
errormsg: "invalid type: 'empty' in this context: 'array[0..0, (string, seq[empty])]' for var"
line: 8
"""

Expand Down
6 changes: 3 additions & 3 deletions tests/errmsgs/tsigmatch.nim
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ proc f(b: B)
but expression 'A()' is of type: A
expression: f(A(), "extra")
tsigmatch.nim(125, 6) Error: type mismatch: got <tuple of (string, proc (){.gcsafe, locks: 0.})>
tsigmatch.nim(125, 6) Error: type mismatch: got <(string, proc (){.gcsafe, locks: 0.})>
but expected one of:
proc foo(x: (string, proc ()))
first type mismatch at position: 1
required type for x: tuple of (string, proc (){.closure.})
but expression '("foobar", proc () = echo(["Hello!"]))' is of type: tuple of (string, proc (){.gcsafe, locks: 0.})
required type for x: (string, proc (){.closure.})
but expression '("foobar", proc () = echo(["Hello!"]))' is of type: (string, proc (){.gcsafe, locks: 0.})
expression: foo(("foobar", proc () = echo(["Hello!"])))
tsigmatch.nim(132, 11) Error: type mismatch: got <proc (s: string): string{.noSideEffect, gcsafe, locks: 0.}>
Expand Down
6 changes: 2 additions & 4 deletions tests/metatype/ttypetraits.nim
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,8 @@ block: # name, `$`
doAssert $tuple[] == "tuple[]"
doAssert $(int,) == "(int,)"
doAssert $(int, float) == "(int, float)"
doAssert $((int), tuple[], tuple[a: uint], tuple[a: uint, b: float], (int,), (int, float)) == "(int, tuple[], tuple[a: uint], tuple[a: uint, b: float], tuple of (int,), tuple of (int, float))"
# xxx this is inconsistent, it should be:
# "(int, tuple[], tuple[a: uint], tuple[a: uint, b: float], (int,), (int, float))"
# which matches how you write it, is consistent with `$(int,)`, and is un-ambiguous.
doAssert $((int), tuple[], tuple[a: uint], tuple[a: uint, b: float], (int,), (int, float)) ==
"(int, tuple[], tuple[a: uint], tuple[a: uint, b: float], (int,), (int, float))"

block: # typeToString
type MyInt = int
Expand Down
2 changes: 1 addition & 1 deletion tests/template/tgensym_instantiationinfo.nim
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ discard """
# bug #7937

template printError(error: typed) =
# Error: inconsistent typing for reintroduced symbol 'instInfo': previous type was: tuple[filename: string, line: int, column: int]; new type is: tuple of (string, int, int)
# Error: inconsistent typing for reintroduced symbol 'instInfo': previous type was: tuple[filename: string, line: int, column: int]; new type is: (string, int, int)
let instInfo {.gensym.} = instantiationInfo()
echo "Error at ", instInfo.filename, ':', instInfo.line, ": ", error

Expand Down

0 comments on commit a6cbe58

Please sign in to comment.