tr macros now documented

This commit is contained in:
Araq 2012-09-10 19:34:16 +02:00
commit 92b449562e
14 changed files with 332 additions and 18 deletions

View file

@ -146,7 +146,7 @@ proc matches(c: PPatternContext, p, n: PNode): bool =
case opr
of "|": result = matchChoice(c, p, n)
of "*": result = matchNested(c, p, n, rpn=false)
of "*|": result = matchNested(c, p, n, rpn=true)
of "**": result = matchNested(c, p, n, rpn=true)
of "~": result = not matches(c, p.sons[1], n)
else: InternalError(p.info, "invalid pattern")
# template {add(a, `&` * b)}(a: string{noalias}, b: varargs[string]) =

View file

@ -491,7 +491,7 @@ proc semPatternBody(c: var TemplCtx, n: PNode): PNode =
# we interpret `*` and `|` only as pattern operators if they occur in
# infix notation, so that '`*`(a, b)' can be used for verbatim matching:
let opr = n.sons[0]
if opr.ident.s == "*" or opr.ident.s == "*|":
if opr.ident.s == "*" or opr.ident.s == "**":
result = newNodeI(nkPattern, n.info, n.len)
result.sons[0] = opr
result.sons[1] = semPatternBody(c, n.sons[1])