fixes #21260; add check for illegal recursion for defaults (#21270)

* fixes #21260; add check for illegal recursion for defaults

* fixes differently
This commit is contained in:
ringabout 2023-01-18 18:52:18 +08:00 • committed by GitHub
commit fc35f83eee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 30 deletions

View file

@ -20,9 +20,8 @@ proc addDefaultFieldForNew(c: PContext, n: PNode): PNode =
var asgnExpr = newTree(nkObjConstr, newNodeIT(nkType, result[1].info, typ))
asgnExpr.typ = typ
var t = typ.skipTypes({tyGenericInst, tyAlias, tySink})[0]
var id = initIntSet()
while true:
asgnExpr.sons.add defaultFieldsForTheUninitialized(c, t.n, id)
asgnExpr.sons.add defaultFieldsForTheUninitialized(c, t.n)
let base = t[0]
if base == nil:
break