Fix circular class reference %p-printing causing infinite recursion (#7106).

Fixes #7106.
This commit is contained in:
Wilson Snyder
2026-02-19 20:15:37 -05:00
parent 4a4f8c6698
commit 0d2fcfd49d
10 changed files with 106 additions and 59 deletions
+2 -1
View File
@@ -153,9 +153,10 @@ void EmitCBaseVisitorConst::emitCFuncDecl(const AstCFunc* funcp, const AstNodeMo
if (funcp->isStatic() && funcp->isProperMethod()) putns(funcp, "static ");
if (funcp->isVirtual()) {
UASSERT_OBJ(funcp->isProperMethod(), funcp, "Virtual function is not a proper method");
putns(funcp, "virtual ");
if (!funcp->isOverride()) putns(funcp, "virtual ");
}
emitCFuncHeader(funcp, modp, /* withScope: */ false);
if (funcp->isOverride()) putns(funcp, " override");
if (funcp->emptyBody() && !funcp->isLoose() && !cLinkage) {
putns(funcp, " {}\n");
} else {