put the new for loop macros under an experimental switch named 'forLoopMacros'
This commit is contained in:
parent
27e1fbe7db
commit
da41fc1801
4 changed files with 13 additions and 5 deletions
|
|
@ -111,14 +111,16 @@ type
|
|||
ideNone, ideSug, ideCon, ideDef, ideUse, ideDus, ideChk, ideMod,
|
||||
ideHighlight, ideOutline, ideKnown, ideMsg
|
||||
|
||||
Feature* = enum ## experimental features
|
||||
Feature* = enum ## experimental features; DO NOT RENAME THESE!
|
||||
implicitDeref,
|
||||
dotOperators,
|
||||
callOperator,
|
||||
parallel,
|
||||
destructor,
|
||||
notnil,
|
||||
dynamicBindSym
|
||||
dynamicBindSym,
|
||||
forLoopMacros
|
||||
#caseStmtMacros
|
||||
|
||||
SymbolFilesOption* = enum
|
||||
disabledSf, writeOnlySf, readOnlySf, v2Sf
|
||||
|
|
|
|||
|
|
@ -720,8 +720,9 @@ proc handleForLoopMacro(c: PContext; n: PNode): PNode =
|
|||
proc semFor(c: PContext, n: PNode): PNode =
|
||||
checkMinSonsLen(n, 3, c.config)
|
||||
var length = sonsLen(n)
|
||||
result = handleForLoopMacro(c, n)
|
||||
if result != nil: return result
|
||||
if forLoopMacros in c.features:
|
||||
result = handleForLoopMacro(c, n)
|
||||
if result != nil: return result
|
||||
openScope(c)
|
||||
result = n
|
||||
n.sons[length-2] = semExprNoDeref(c, n.sons[length-2], {efWantIterator})
|
||||
|
|
|
|||
|
|
@ -5380,6 +5380,7 @@ type ``system.ForLoopStmt`` can rewrite the entirety of a ``for`` loop:
|
|||
:test: "nim c $1"
|
||||
|
||||
import macros
|
||||
{.experimental: "forLoopMacros".}
|
||||
|
||||
macro enumerate(x: ForLoopStmt): untyped =
|
||||
expectKind x, nnkForStmt
|
||||
|
|
@ -5406,6 +5407,10 @@ type ``system.ForLoopStmt`` can rewrite the entirety of a ``for`` loop:
|
|||
echo a2, " ", b2
|
||||
|
||||
|
||||
Currently for loop macros must be enabled explicitly
|
||||
via ``{.experimental: "forLoopMacros".}``.
|
||||
|
||||
|
||||
Special Types
|
||||
=============
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ discard """
|
|||
"""
|
||||
|
||||
import macros
|
||||
|
||||
{.experimental: "forLoopMacros".}
|
||||
macro mymacro(): untyped =
|
||||
result = newLit([1, 2, 3])
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue