This commit is contained in:
Andreas Rumpf
2021-07-30 12:05:14 +02:00
committed by GitHub
parent c6fadb1799
commit 562dde624f
2 changed files with 6 additions and 3 deletions

View File

@@ -303,12 +303,15 @@ proc registerAdditionalOps*(c: PCtx) =
proc getEffectList(c: PCtx; a: VmArgs; effectIndex: int) =
let fn = getNode(a, 0)
var list = newNodeI(nkBracket, fn.info)
if fn.typ != nil and fn.typ.n != nil and fn.typ.n[0].len >= effectListLen and
fn.typ.n[0][effectIndex] != nil:
var list = newNodeI(nkBracket, fn.info)
for e in fn.typ.n[0][effectIndex]:
list.add opMapTypeInstToAst(c.cache, e.typ.skipTypes({tyRef}), e.info, c.idgen)
setResult(a, list)
else:
list.add newIdentNode(getIdent(c.cache, "UncomputedEffects"), fn.info)
setResult(a, list)
registerCallback c, "stdlib.effecttraits.getRaisesListImpl", proc (a: VmArgs) =
getEffectList(c, a, exceptionEffects)

View File

@@ -11,7 +11,7 @@
## for Nim's macro system.
## **Since**: Version 1.4.
##
## One can test for the existance of this standard module
## One can test for the existence of this standard module
## via `defined(nimHasEffectTraitsModule)`.
import macros