* fixes #11515

* better fix for #11515; make tests green
This commit is contained in:
Andreas Rumpf
2019-07-01 18:08:50 +02:00
committed by GitHub
parent 9b949855c7
commit 766960dc15
4 changed files with 8 additions and 6 deletions

View File

@@ -2023,8 +2023,11 @@ proc tryExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode =
let oldErrorCount = c.config.errorCounter
let oldErrorMax = c.config.errorMax
let oldCompilesId = c.compilesContextId
inc c.compilesContextIdGenerator
c.compilesContextId = c.compilesContextIdGenerator
# if this is a nested 'when compiles', do not increase the ID so that
# generic instantations can still be cached for this level.
if c.compilesContextId == 0:
inc c.compilesContextIdGenerator
c.compilesContextId = c.compilesContextIdGenerator
# do not halt after first error:
c.config.errorMax = high(int)

View File

@@ -98,7 +98,7 @@ proc sameInstantiation(a, b: TInstantiation): bool =
proc genericCacheGet(genericSym: PSym, entry: TInstantiation;
id: CompilesId): PSym =
for inst in genericSym.procInstCache:
if inst.compilesId == id and sameInstantiation(entry, inst[]):
if (inst.compilesId == 0 or inst.compilesId == id) and sameInstantiation(entry, inst[]):
return inst.sym
when false:

View File

@@ -1,6 +1,5 @@
discard """
errormsg: "generic instantiation too nested"
file: "system.nim"
action: compile
"""
# bug #4766

View File

@@ -1,5 +1,5 @@
discard """
errormsg: "generic instantiation too nested"
action: compile
"""
#[