From 8590cb48275ec90be27e07d612dac69bfb0bde05 Mon Sep 17 00:00:00 2001 From: metagn Date: Tue, 20 Aug 2024 16:00:40 +0300 Subject: [PATCH] remove restriction in semtempl, test #23898 --- compiler/semtempl.nim | 4 ++-- tests/overload/m23898_1.nim | 1 + tests/overload/m23898_2.nim | 4 ++++ tests/overload/t23898.nim | 8 ++++++++ 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 tests/overload/m23898_1.nim create mode 100644 tests/overload/m23898_2.nim create mode 100644 tests/overload/t23898.nim diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index c6f2fb60cc62..f521de7e399e 100644 --- a/compiler/semtempl.nim +++ b/compiler/semtempl.nim @@ -362,7 +362,7 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode = result = newSymNode(s, n.info) onUse(n.info, s) else: - if s.kind in {skType, skVar, skLet, skConst}: + if s.kind in {skVar, skLet, skConst}: discard qualifiedLookUp(c.c, n, {checkAmbiguity, checkModule}) result = semTemplSymbol(c.c, n, s, c.noGenSym > 0) of nkBind: @@ -572,7 +572,7 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode = elif contains(c.toMixin, s.name.id): return symChoice(c.c, n, s, scForceOpen, c.noGenSym > 0) else: - if s.kind in {skType, skVar, skLet, skConst}: + if s.kind in {skVar, skLet, skConst}: discard qualifiedLookUp(c.c, n, {checkAmbiguity, checkModule}) return semTemplSymbol(c.c, n, s, c.noGenSym > 0) if n.kind == nkDotExpr: diff --git a/tests/overload/m23898_1.nim b/tests/overload/m23898_1.nim new file mode 100644 index 000000000000..47046142e397 --- /dev/null +++ b/tests/overload/m23898_1.nim @@ -0,0 +1 @@ +type K* = object diff --git a/tests/overload/m23898_2.nim b/tests/overload/m23898_2.nim new file mode 100644 index 000000000000..e0a8cda038cd --- /dev/null +++ b/tests/overload/m23898_2.nim @@ -0,0 +1,4 @@ +import ./m23898_1 +export m23898_1 +template K*(kind: static int): auto = typedesc[m23898_1.K] +template B*(kind: static int): auto = typedesc[m23898_1.K] diff --git a/tests/overload/t23898.nim b/tests/overload/t23898.nim new file mode 100644 index 000000000000..ad5ea9f76fd4 --- /dev/null +++ b/tests/overload/t23898.nim @@ -0,0 +1,8 @@ +import ./m23898_2 +discard default(B(0)) # compiles +discard default(m23898_2.B(0)) # compiles +discard default(K(0)) # compiles +template r() = + discard default(B(0)) # compiles + discard default(m23898_2.B(0)) # compiles + discard default(K(0)) # does not compile