allow tuples and procs in 'toTask' + minor things (#22530)

This commit is contained in:
Andreas Rumpf
2023-08-22 21:01:08 +02:00
committed by GitHub
parent a26ccb3476
commit 6b04d0395a
2 changed files with 3 additions and 3 deletions

View File

@@ -172,7 +172,7 @@ The parsing is performed with the help of 3 helper templates that that can be
implemented for a custom type.
These templates need to be named ``atom`` and ``nxt``. ``atom`` should be
overloaded to handle both single characters and sets of character.
overloaded to handle both `char` and `set[char]`.
```nim
import std/streams
@@ -472,7 +472,7 @@ macro scanf*(input: string; pattern: static[string]; results: varargs[typed]): b
macro scanTuple*(input: untyped; pattern: static[string]; matcherTypes: varargs[untyped]): untyped {.since: (1, 5).}=
## Works identically as scanf, but instead of predeclaring variables it returns a tuple.
## Tuple is started with a bool which indicates if the scan was successful
## Tuple is started with a bool which indicates if the scan was successful
## followed by the requested data.
## If using a user defined matcher, provide the types in order they appear after pattern:
## `line.scanTuple("${yourMatcher()}", int)`

View File

@@ -173,7 +173,7 @@ macro toTask*(e: typed{nkCall | nkInfix | nkPrefix | nkPostfix | nkCommand | nkC
# passing by static parameters
# so we pass them directly instead of passing by scratchObj
callNode.add nnkExprEqExpr.newTree(formalParams[i][0], e[i])
of nnkSym, nnkPtrTy:
of nnkSym, nnkPtrTy, nnkProcTy, nnkTupleConstr:
addAllNode(param, e[i])
of nnkCharLit..nnkNilLit:
callNode.add nnkExprEqExpr.newTree(formalParams[i][0], e[i])