Avoid evaluating macros twice in type sections (#10550)

Fixes #10548
This commit is contained in:
LemonBoy 2019-02-06 11:35:44 +01:00 • committed by Andreas Rumpf
commit 6c8dee4180
2 changed files with 20 additions and 0 deletions

View file

@ -1129,6 +1129,11 @@ proc typeSectionRightSidePass(c: PContext, n: PNode) =
#debug s.typ
s.ast = a
popOwner(c)
# If the right hand side expression was a macro call we replace it with
# its evaluated result here so that we don't execute it once again in the
# final pass
if a[2].kind in nkCallKinds:
a[2] = newNodeIT(nkType, a[2].info, t)
if sfExportc in s.flags and s.typ.kind == tyAlias:
localError(c.config, name.info, "{.exportc.} not allowed for type aliases")
let aa = a.sons[2]