From 322d2f8096c11b60294379a3a9b4dc7cca81d30e Mon Sep 17 00:00:00 2001 From: SirOlaf <34164198+SirOlaf@users.noreply.github.com> Date: Tue, 18 Oct 2022 20:56:38 +0200 Subject: [PATCH] [backport] Handle nkOpenSymChoice for nkAccQuoted in considerQuotedIdent (#20578) * Handle nkOpenSymChoice for nkAccQuoted in considerQuotedIdent * Add test * Update compiler/lookups.nim Co-authored-by: SirOlaf Co-authored-by: Andreas Rumpf (cherry picked from commit 2f441ac6754e76f936900f4f4641587a82967f71) --- compiler/lookups.nim | 5 +++++ tests/template/template_various.nim | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/compiler/lookups.nim b/compiler/lookups.nim index fc30408e5a..80eeb50fac 100644 --- a/compiler/lookups.nim +++ b/compiler/lookups.nim @@ -44,6 +44,11 @@ proc considerQuotedIdent*(c: PContext; n: PNode, origin: PNode = nil): PIdent = case x.kind of nkIdent: id.add(x.ident.s) of nkSym: id.add(x.sym.name.s) + of nkSymChoices: + if x[0].kind == nkSym: + id.add(x[0].sym.name.s) + else: + handleError(n, origin) of nkLiterals - nkFloatLiterals: id.add(x.renderTree) else: handleError(n, origin) result = getIdent(c.cache, id) diff --git a/tests/template/template_various.nim b/tests/template/template_various.nim index e7a2be748d..f4812a8ac7 100644 --- a/tests/template/template_various.nim +++ b/tests/template/template_various.nim @@ -353,3 +353,18 @@ block gensym3: echo a ! b ! c ! d echo a ! b ! c ! d ! e echo x,y,z + + +block identifier_construction_with_overridden_symbol: + # could use add, but wanna make sure it's an override no matter what + func examplefn = discard + func examplefn(x: int) = discard + + # the function our template wants to use + func examplefn1 = discard + + template exampletempl(n) = + # attempt to build a name using the overridden symbol "examplefn" + `examplefn n`() + + exampletempl(1)