From 58e6d439d88fcac4950b1de80af96234688f056b Mon Sep 17 00:00:00 2001 From: metagn Date: Sun, 11 Sep 2022 09:33:24 +0300 Subject: [PATCH] fix #13515 [backport] (#20315) * fix #13515 * only compile test * no idea why this PR is unlocking this * don't rope in symchoices * even more restrictive --- compiler/semtempl.nim | 8 +++++++- tests/template/t13515.nim | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/template/t13515.nim diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index 6b71892a0d..2d5f077f93 100644 --- a/compiler/semtempl.nim +++ b/compiler/semtempl.nim @@ -250,8 +250,14 @@ proc semTemplSymbol(c: PContext, n: PNode, s: PSym; isField: bool): PNode = of skUnknown: # Introduced in this pass! Leave it as an identifier. result = n - of OverloadableSyms: + of OverloadableSyms-{skTemplate,skMacro}: result = symChoice(c, n, s, scOpen, isField) + of skTemplate, skMacro: + result = symChoice(c, n, s, scOpen, isField) + if result.kind == nkSym: + # template/macro symbols might need to be semchecked again + # prepareOperand etc don't do this without setting the type to nil + result.typ = nil of skGenericParam: if isField and sfGenSym in s.flags: result = n else: result = newSymNodeTypeDesc(s, c.idgen, n.info) diff --git a/tests/template/t13515.nim b/tests/template/t13515.nim new file mode 100644 index 0000000000..ffebedcbe8 --- /dev/null +++ b/tests/template/t13515.nim @@ -0,0 +1,16 @@ +discard """ + action: compile +""" + +template test: bool = true + +# compiles: +if not test: + echo "wtf" + +# does not compile: +template x = + if not test: + echo "wtf" + +x