diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2021-09-27 19:25:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-27 19:25:00 +0200 |
commit | cdf9ac675b4348a7b5239186637c54920bb92619 (patch) | |
tree | d8c179d8625481c4b25ab13b3d1d2472a783441e | |
parent | 5325a366e79b6e34fcd2b2dfe675897212f8ca2d (diff) | |
download | Nim-cdf9ac675b4348a7b5239186637c54920bb92619.tar.gz |
this ensures libp2p continues to compile [backport] (#18908)
-rw-r--r-- | compiler/cgen.nim | 11 | ||||
-rw-r--r-- | compiler/guards.nim | 10 |
2 files changed, 16 insertions, 5 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index a06a87172..43410dc60 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -855,10 +855,15 @@ proc closureSetup(p: BProc, prc: PSym) = [rdLoc(env.loc), getTypeDesc(p.module, env.typ)]) proc containsResult(n: PNode): bool = - if n.kind == nkSym and n.sym.kind == skResult: - result = true + result = false + case n.kind + of nkEmpty..pred(nkSym), succ(nkSym)..nkNilLit, nkFormalParams: + discard + of nkSym: + if n.sym.kind == skResult: + result = true else: - for i in 0..<n.safeLen: + for i in 0..<n.len: if containsResult(n[i]): return true const harmless = {nkConstSection, nkTypeSection, nkEmpty, nkCommentStmt, nkTemplateDef, diff --git a/compiler/guards.nim b/compiler/guards.nim index 028142127..d1265d42c 100644 --- a/compiler/guards.nim +++ b/compiler/guards.nim @@ -441,8 +441,14 @@ proc sameTree*(a, b: PNode): bool = proc hasSubTree(n, x: PNode): bool = if n.sameTree(x): result = true else: - for i in 0..n.safeLen-1: - if hasSubTree(n[i], x): return true + case n.kind + of nkEmpty..nkNilLit: + result = n.sameTree(x) + of nkFormalParams: + discard + else: + for i in 0..<n.len: + if hasSubTree(n[i], x): return true proc invalidateFacts*(s: var seq[PNode], n: PNode) = # We are able to guard local vars (as opposed to 'let' variables)! |