unify tuple expressions (#13793)
* unify tuple expressions * fix test * fix test * apply feedback * Handle empty tuples * Fix rendering named unary tuple * Protect static NimNode against stripping * Slightly less hacky * Revert "Slightly less hacky" This reverts commit 170c5aec0addc029f637afbc948700ca006b7942. * Slightly less hacky * Cleanup * Fix test * Fix another test * Add condsym * Rebase fallout * changelog: Move from compiler changes to language changes * Add stricter tests * Add empty tuple example to doc/astspec * Fix test Co-authored-by: Clyybber <darkmine956@gmail.com>
This commit is contained in:
parent
35655cd189
commit
159c06e045
13 changed files with 136 additions and 32 deletions
|
|
@ -48,3 +48,34 @@ macro fun3(): untyped =
|
|||
int | float | array | seq | object | ptr | pointer | float32
|
||||
doAssert n.repr == "int | float | array | seq | object | ptr | pointer | float32", n.repr
|
||||
fun3()
|
||||
|
||||
macro fun4() =
|
||||
let n = quote do:
|
||||
(a: 1)
|
||||
doAssert n.repr == "(a: 1)", n.repr
|
||||
fun4()
|
||||
|
||||
# nkTupleConstr vs nkPar tests:
|
||||
block: # lispRepr
|
||||
macro lispRepr2(a: untyped): string = newLit a.lispRepr
|
||||
|
||||
doAssert lispRepr2(()) == """(TupleConstr)"""
|
||||
doAssert lispRepr2((a: 1)) == """(TupleConstr (ExprColonExpr (Ident "a") (IntLit 1)))"""
|
||||
doAssert lispRepr2((a: 1, b: 2)) == """(TupleConstr (ExprColonExpr (Ident "a") (IntLit 1)) (ExprColonExpr (Ident "b") (IntLit 2)))"""
|
||||
doAssert lispRepr2((1,)) == """(TupleConstr (IntLit 1))"""
|
||||
doAssert lispRepr2((1, 2)) == """(TupleConstr (IntLit 1) (IntLit 2))"""
|
||||
doAssert lispRepr2((1, 2, 3.0)) == """(TupleConstr (IntLit 1) (IntLit 2) (FloatLit 3.0))"""
|
||||
doAssert lispRepr2((1)) == """(Par (IntLit 1))"""
|
||||
doAssert lispRepr2((1+2)) == """(Par (Infix (Ident "+") (IntLit 1) (IntLit 2)))"""
|
||||
|
||||
block: # repr
|
||||
macro repr2(a: untyped): string = newLit a.repr
|
||||
|
||||
doAssert repr2(()) == "()"
|
||||
doAssert repr2((a: 1)) == "(a: 1)"
|
||||
doAssert repr2((a: 1, b: 2)) == "(a: 1, b: 2)"
|
||||
doAssert repr2((1,)) == "(1,)"
|
||||
doAssert repr2((1, 2)) == "(1, 2)"
|
||||
doAssert repr2((1, 2, 3.0)) == "(1, 2, 3.0)"
|
||||
doAssert repr2((1)) == "(1)"
|
||||
doAssert repr2((1+2)) == "(1 + 2)"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue