Fix dynamic new with init argument (#2325).

This commit is contained in:
Wilson Snyder 2020-11-07 14:28:05 -05:00
parent ff5465308b
commit 778f133118
2 changed files with 9 additions and 3 deletions

View File

@ -3119,8 +3119,7 @@ private:
iterateCheckSigned32(nodep, "new() size", nodep->sizep(), BOTH);
}
if (nodep->rhsp()) {
iterateCheckTyped(nodep, "Dynamic array new RHS", nodep->rhsp(), adtypep->subDTypep(),
BOTH);
iterateCheckTyped(nodep, "Dynamic array new RHS", nodep->rhsp(), adtypep, BOTH);
}
}
@ -5037,7 +5036,7 @@ private:
void iterateCheckTyped(AstNode* nodep, const char* side, AstNode* underp,
AstNodeDType* expDTypep, Stage stage) {
if (stage & PRELIM) {
underp = userIterateSubtreeReturnEdits(underp, WidthVP(SELF, PRELIM).p());
underp = userIterateSubtreeReturnEdits(underp, WidthVP(expDTypep, PRELIM).p());
}
if (stage & FINAL) {
underp = iterateCheck(nodep, side, underp, SELF, FINAL, expDTypep, EXTEND_EXP);

View File

@ -126,6 +126,13 @@ module t (/*AUTOARG*/
`checkh(b[2], 0);
`checkh(b[3], 0);
a = new[4] ('{8'd1,8'd2,8'd3,8'd4});
`checkh(a.size, 4);
`checkh(a[0], 1);
`checkh(a[1], 2);
`checkh(a[2], 3);
`checkh(a[3], 4);
// test wide dynamic array
p256 = new [11];
`checkh(p256.size, 11);