added system.default in order to prevent the abstraction inversion that 'template default(T): untyped = (var x: T; x)' causes

This commit is contained in:
Andreas Rumpf 2019-03-05 09:54:59 +01:00
commit 142a2d3551
7 changed files with 50 additions and 11 deletions

View file

@ -1153,6 +1153,9 @@ proc genReset(p: BProc, n: PNode) =
addrLoc(p.config, a),
genTypeInfo(p.module, skipTypes(a.t, {tyVar}), n.info))
proc genDefault(p: BProc; n: PNode; d: var TLoc) =
resetLoc(p, d)
proc rawGenNew(p: BProc, a: TLoc, sizeExpr: Rope) =
var sizeExpr = sizeExpr
let typ = a.t
@ -2063,6 +2066,7 @@ proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
addf(p.module.s[cfsDynLibInit], "\t$1 = ($2) hcrGetProc($3, \"$1\");$n",
[mangleDynLibProc(prc), getTypeDesc(p.module, prc.loc.t), getModuleDllPath(p.module, prc)])
genCall(p, e, d)
of mDefault: genDefault(p, e, d)
of mReset: genReset(p, e)
of mEcho: genEcho(p, e[1].skipConv)
of mArrToSeq: genArrToSeq(p, e, d)