diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-03-18 05:43:32 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-18 13:43:32 +0100 |
commit | ed263e174e7f9a7bce1863dc57979c1a752d2e66 (patch) | |
tree | d40b6cd68e9dff8abc0738109d95d19f648da4d5 | |
parent | a87062393a7acef21b911dbd356b675061a671ab (diff) | |
download | Nim-ed263e174e7f9a7bce1863dc57979c1a752d2e66.tar.gz |
fix #13524 astToStr now works inside generics (#13681)
-rw-r--r-- | compiler/semgnrc.nim | 2 | ||||
-rw-r--r-- | tests/generics/t13525.nim | 6 |
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" |