Step 332: Multiple Inheritance in ClassDeclaration (12/12 tests)

BaseClass struct with access specifiers and virtual flags. Backward-compatible
getBases() migration from legacy superClass. Diamond inheritance detection via
BFS. Updated Serialization for baseClasses array roundtrip.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Bill
2026-02-15 19:31:55 -07:00
parent 6784281489
commit b1654f0b85
6 changed files with 389 additions and 1 deletions

View File

@@ -403,6 +403,13 @@ inline std::string getNodeName(const ASTNode* node) {
if (ct == "BooleanLiteral")
return static_cast<const BooleanLiteral*>(node)->value
? "true" : "false";
// Class declarations (Sprint 11c + 12c)
if (ct == "ClassDeclaration")
return static_cast<const ClassDeclaration*>(node)->name;
if (ct == "InterfaceDeclaration")
return static_cast<const InterfaceDeclaration*>(node)->name;
if (ct == "MethodDeclaration")
return static_cast<const MethodDeclaration*>(node)->name;
// Host Boundary (Step 288)
if (ct == "HostCall")
return static_cast<const HostCall*>(node)->name;