Plug another hole: default(T) forbidden for objects requiring initialization

This commit is contained in:
Zahary Karadjov 2020-03-27 20:53:09 +02:00 • committed by Andreas Rumpf
commit 8ae48292ff
5 changed files with 31 additions and 19 deletions

View file

@ -2264,6 +2264,12 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode =
of mSizeOf:
markUsed(c, n.info, s)
result = semSizeof(c, setMs(n, s))
of mDefault:
result = semDirectOp(c, n, flags)
c.config.internalAssert result[1].typ.kind == tyTypeDesc
let typ = result[1].typ.base
if typ.kind in {tyObject, tyTuple}:
checkDefaultConstruction(c, typ, n.info)
else:
result = semDirectOp(c, n, flags)