Fix super constructor calls with local variables, by using init functions (#6214) (#6933)

This commit is contained in:
Igor Zaworski
2026-03-04 17:55:55 -05:00
committed by GitHub
parent c34cd6ddf1
commit 7acd73fede
11 changed files with 122 additions and 94 deletions
+6
View File
@@ -149,6 +149,10 @@ class CCtorsVisitor final : public VNVisitor {
// VISITORS
void visit(AstNodeModule* nodep) override {
if (const AstClass* const classp = VN_CAST(nodep, Class)) {
// Interface class may only have pure virtuals and params which do not need cctor reset
if (classp->isInterfaceClass()) return;
}
VL_RESTORER(m_modp);
VL_RESTORER(m_varResetp);
m_modp = nodep;
@@ -199,6 +203,8 @@ class CCtorsVisitor final : public VNVisitor {
m_varResetp->add(crstp);
} else if (m_cfuncp) {
nodep->addNextHere(crstp);
} else {
nodep->v3fatalSrc("Var needs CReset but nowhere to place it");
}
}
}