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
|
|
@ -327,19 +327,43 @@ static:
|
|||
|
||||
testArrayAccessOperator(x[y])
|
||||
|
||||
|
||||
|
||||
## Parentheses
|
||||
|
||||
scope:
|
||||
|
||||
let ast = myquote:
|
||||
(1, 2, (3))
|
||||
(a + b) * c
|
||||
|
||||
ast.matchAst:
|
||||
of nnkPar(nnkIntLit(intVal = 1), nnkIntLit(intVal = 2), nnkPar(nnkIntLit(intVal = 3))):
|
||||
echo "ok"
|
||||
of nnkInfix(ident"*", nnkPar(nnkInfix(ident"+", ident"a", ident"b")), ident"c"):
|
||||
echo "parentheses ok"
|
||||
|
||||
## Tuple Constructors
|
||||
|
||||
scope:
|
||||
let ast = myquote:
|
||||
(1, 2, 3)
|
||||
(a: 1, b: 2, c: 3)
|
||||
(1,)
|
||||
(a: 1)
|
||||
()
|
||||
|
||||
for it in ast:
|
||||
echo it.lispRepr
|
||||
it.matchAst:
|
||||
of nnkTupleConstr(nnkIntLit(intVal = 1), nnkIntLit(intVal = 2), nnkIntLit(intVal = 3)):
|
||||
echo "simple tuple ok"
|
||||
of nnkTupleConstr(
|
||||
nnkExprColonExpr(ident"a", nnkIntLit(intVal = 1)),
|
||||
nnkExprColonExpr(ident"b", nnkIntLit(intVal = 2)),
|
||||
nnkExprColonExpr(ident"c", nnkIntLit(intVal = 3))
|
||||
):
|
||||
echo "named tuple ok"
|
||||
of nnkTupleConstr(nnkIntLit(intVal = 1)):
|
||||
echo "one tuple ok"
|
||||
of nnkTupleConstr(nnkExprColonExpr(ident"a", nnkIntLit(intVal = 1))):
|
||||
echo "named one tuple ok"
|
||||
of nnkTupleConstr():
|
||||
echo "empty tuple ok"
|
||||
|
||||
## Curly braces
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue