mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
Consider iterator types (#24577)
According to the macros doc nnkIteratorTy trees use the same structure
as nnkProcTy
(cherry picked from commit d3b6dba616)
This commit is contained in:
committed by
narimiran
parent
f5804a36b9
commit
fb13e3608b
@@ -1327,7 +1327,7 @@ proc `name=`*(someProc: NimNode; val: NimNode) =
|
||||
else: someProc[0] = val
|
||||
|
||||
proc params*(someProc: NimNode): NimNode =
|
||||
if someProc.kind == nnkProcTy:
|
||||
if someProc.kind in {nnkProcTy, nnkIteratorTy}:
|
||||
someProc[0]
|
||||
else:
|
||||
someProc.expectRoutine
|
||||
@@ -1335,7 +1335,7 @@ proc params*(someProc: NimNode): NimNode =
|
||||
|
||||
proc `params=`* (someProc: NimNode; params: NimNode) =
|
||||
expectKind(params, nnkFormalParams)
|
||||
if someProc.kind == nnkProcTy:
|
||||
if someProc.kind in {nnkProcTy, nnkIteratorTy}:
|
||||
someProc[0] = params
|
||||
else:
|
||||
someProc.expectRoutine
|
||||
@@ -1344,7 +1344,7 @@ proc `params=`* (someProc: NimNode; params: NimNode) =
|
||||
proc pragma*(someProc: NimNode): NimNode =
|
||||
## Get the pragma of a proc type.
|
||||
## These will be expanded.
|
||||
if someProc.kind == nnkProcTy:
|
||||
if someProc.kind in {nnkProcTy, nnkIteratorTy}:
|
||||
result = someProc[1]
|
||||
else:
|
||||
someProc.expectRoutine
|
||||
@@ -1352,7 +1352,7 @@ proc pragma*(someProc: NimNode): NimNode =
|
||||
proc `pragma=`*(someProc: NimNode; val: NimNode) =
|
||||
## Set the pragma of a proc type.
|
||||
expectKind(val, {nnkEmpty, nnkPragma})
|
||||
if someProc.kind == nnkProcTy:
|
||||
if someProc.kind in {nnkProcTy, nnkIteratorTy}:
|
||||
someProc[1] = val
|
||||
else:
|
||||
someProc.expectRoutine
|
||||
|
||||
Reference in New Issue
Block a user