summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2020-03-18 05:43:32 -0700
committerGitHub <noreply@github.com>2020-03-18 13:43:32 +0100
commited263e174e7f9a7bce1863dc57979c1a752d2e66 (patch)
treed40b6cd68e9dff8abc0738109d95d19f648da4d5
parenta87062393a7acef21b911dbd356b675061a671ab (diff)
downloadNim-ed263e174e7f9a7bce1863dc57979c1a752d2e66.tar.gz
fix #13524 astToStr now works inside generics (#13681)
-rw-r--r--compiler/semgnrc.nim2
-rw-r--r--tests/generics/t13525.nim6
2 files changed, 7 insertions, 1 deletions
diff --git a/compiler/semgnrc.nim b/compiler/semgnrc.nim
index a494db475..6fefc2233 100644
--- a/compiler/semgnrc.nim
+++ b/compiler/semgnrc.nim
@@ -226,7 +226,7 @@ proc semGenericStmt(c: PContext, n: PNode,
     var mixinContext = false
     if s != nil:
       incl(s.flags, sfUsed)
-      mixinContext = s.magic in {mDefined, mDefinedInScope, mCompiles}
+      mixinContext = s.magic in {mDefined, mDefinedInScope, mCompiles, mAstToStr}
       let sc = symChoice(c, fn, s, if s.isMixedIn: scForceOpen else: scOpen)
       case s.kind
       of skMacro:
diff --git a/tests/generics/t13525.nim b/tests/generics/t13525.nim
new file mode 100644
index 000000000..d1b8df78c
--- /dev/null
+++ b/tests/generics/t13525.nim
@@ -0,0 +1,6 @@
+# https://github.com/nim-lang/Nim/issues/13524
+template fun(field): untyped = astToStr(field)
+proc test1(): string = fun(nonexistant1)
+proc test2[T](): string = fun(nonexistant2) # used to cause: Error: undeclared identifier: 'nonexistant2'
+doAssert test1() == "nonexistant1"
+doAssert test2[int]() == "nonexistant2"