From 4ec39b6a8ff4b0f1cfd60f605f60284f0226290e Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Wed, 8 Feb 2017 11:33:36 +0100 Subject: [PATCH] macros are now checked to not produce cyclic ASTs --- compiler/evaltempl.nim | 1 - compiler/sem.nim | 14 +++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler/evaltempl.nim b/compiler/evaltempl.nim index 87745f7edf..318254a809 100644 --- a/compiler/evaltempl.nim +++ b/compiler/evaltempl.nim @@ -121,7 +121,6 @@ proc wrapInComesFrom*(info: TLineInfo; res: PNode): PNode = else: result = newNodeI(nkPar, info) result.add res - result.flags.incl nfNone proc evalTemplate*(n: PNode, tmpl, genSymOwner: PSym; fromHlo=false): PNode = inc(evalTemplateCounter) diff --git a/compiler/sem.nim b/compiler/sem.nim index d3349a7507..dbf2376357 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -237,6 +237,14 @@ when false: result.handleIsOperator = proc (n: PNode): PNode = result = isOpImpl(c, n) +proc hasCycle(n: PNode): bool = + incl n.flags, nfNone + for i in 0..