summary refs log tree commit diff stats
path: root/lib/pure/sugar.nim
diff options
context:
space:
mode:
authormetagn <metagngn@gmail.com>2024-08-12 16:33:26 +0300
committerGitHub <noreply@github.com>2024-08-12 15:33:26 +0200
commit0c890ff9a70258af8231967229b891df9731a5df (patch)
treef42d7dbf06e1f9441c704f3aebb288457f3ff0ea /lib/pure/sugar.nim
parent7a0069a134aae949f310b5936c6a31270dc79316 (diff)
downloadNim-0c890ff9a70258af8231967229b891df9731a5df.tar.gz
opensym as node kind + fixed experimental switch (#23892)
refs https://github.com/nim-lang/Nim/pull/23873#discussion_r1687995060,
fixes #23386, fixes #23385, supersedes #23572

Turns the `nfOpenSym` node flag implemented in #23091 and extended in
#23102 and #23873, into a node kind `nkOpenSym` that forms a unary node
containing either `nkSym` or `nkOpenSymChoice`. Since this affects
macros working on generic proc AST, the node kind is now only generated
when the experimental switch `genericsOpenSym` is enabled, and a new
node flag `nfDisabledOpenSym` is set to the `nkSym` or `nkOpenSymChoice`
when the switch is not enabled so that we can give a warning.

Now that the experimental switch has more reasonable semantics, we
define `nimHasGenericsOpenSym2`.
Diffstat (limited to 'lib/pure/sugar.nim')
-rw-r--r--lib/pure/sugar.nim2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/pure/sugar.nim b/lib/pure/sugar.nim
index 7833ed063..e3ec99b0c 100644
--- a/lib/pure/sugar.nim
+++ b/lib/pure/sugar.nim
@@ -345,7 +345,7 @@ proc collectImpl(init, body: NimNode): NimNode {.since: (1, 1).} =
   let res = genSym(nskVar, "collectResult")
   var bracketExpr: NimNode
   if init != nil:
-    expectKind init, {nnkCall, nnkIdent, nnkSym, nnkClosedSymChoice, nnkOpenSymChoice}
+    expectKind init, {nnkCall, nnkIdent, nnkSym, nnkClosedSymChoice, nnkOpenSymChoice, nnkOpenSym}
     bracketExpr = newTree(nnkBracketExpr,
       if init.kind in {nnkCall, nnkClosedSymChoice, nnkOpenSymChoice}:
         freshIdentNodes(init[0]) else: freshIdentNodes(init))