implements https://github.com/nim-lang/RFCs/issues/258 (#15503)
* implements https://github.com/nim-lang/RFCs/issues/258 * don't be too strict with custom pragma blocks * cast pragmas: documentation * added most missing inference query procs to effecttraits.nim
This commit is contained in:
parent
acd71dd6bb
commit
92163fa330
16 changed files with 232 additions and 68 deletions
|
|
@ -485,17 +485,24 @@ proc setOrTableConstr(p: var Parser): PNode =
|
|||
eat(p, tkCurlyRi) # skip '}'
|
||||
|
||||
proc parseCast(p: var Parser): PNode =
|
||||
#| castExpr = 'cast' '[' optInd typeDesc optPar ']' '(' optInd expr optPar ')'
|
||||
#| castExpr = 'cast' ('[' optInd typeDesc optPar ']' '(' optInd expr optPar ')') /
|
||||
# ('(' optInd exprColonEqExpr optPar ')')
|
||||
result = newNodeP(nkCast, p)
|
||||
getTok(p)
|
||||
eat(p, tkBracketLe)
|
||||
optInd(p, result)
|
||||
result.add(parseTypeDesc(p))
|
||||
optPar(p)
|
||||
eat(p, tkBracketRi)
|
||||
eat(p, tkParLe)
|
||||
optInd(p, result)
|
||||
result.add(parseExpr(p))
|
||||
if p.tok.tokType == tkBracketLe:
|
||||
getTok(p)
|
||||
optInd(p, result)
|
||||
result.add(parseTypeDesc(p))
|
||||
optPar(p)
|
||||
eat(p, tkBracketRi)
|
||||
eat(p, tkParLe)
|
||||
optInd(p, result)
|
||||
result.add(parseExpr(p))
|
||||
else:
|
||||
result.add p.emptyNode
|
||||
eat(p, tkParLe)
|
||||
optInd(p, result)
|
||||
result.add(exprColonEqExpr(p))
|
||||
optPar(p)
|
||||
eat(p, tkParRi)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue