`semProcAux` has a check for `checkMinSonsLen(n, bodyPos + 1)`
This commit is contained in:
metagn
2023-04-11 10:37:53 +03:00
committed by GitHub
parent 1bb117cd7a
commit be06446ffe
2 changed files with 22 additions and 2 deletions

View File

@@ -2303,7 +2303,6 @@ proc semMethod(c: PContext, n: PNode): PNode =
proc semConverterDef(c: PContext, n: PNode): PNode =
if not isTopLevel(c): localError(c.config, n.info, errXOnlyAtModuleScope % "converter")
checkSonsLen(n, bodyPos + 1, c.config)
result = semProcAux(c, n, skConverter, converterPragmas)
# macros can transform converters to nothing:
if namePos >= result.safeLen: return result
@@ -2318,7 +2317,6 @@ proc semConverterDef(c: PContext, n: PNode): PNode =
addConverterDef(c, LazySym(sym: s))
proc semMacroDef(c: PContext, n: PNode): PNode =
checkSonsLen(n, bodyPos + 1, c.config)
result = semProcAux(c, n, skMacro, macroPragmas)
# macros can transform macros to nothing:
if namePos >= result.safeLen: return result

22
tests/macros/t15691.nim Normal file
View File

@@ -0,0 +1,22 @@
discard """
action: compile
"""
import std/macros
macro simplifiedExpandMacros(body: typed): untyped =
result = body
simplifiedExpandMacros:
proc testProc() = discard
simplifiedExpandMacros:
template testTemplate(): untyped = discard
# Error: illformed AST: macro testMacro(): untyped =
simplifiedExpandMacros:
macro testMacro(): untyped = discard
# Error: illformed AST: converter testConverter(x: int): float =
simplifiedExpandMacros:
converter testConverter(x: int): float = discard