Step 335: C++ Generator — Inheritance + Templates (12/12 tests)

Updated CppGenerator, PythonGenerator, JavaGenerator for multiple inheritance
output using getBases(). C++ emits template prefix + access specifiers + virtual.
Python uses direct multi-base. Java uses extends + implements adaptation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Bill
2026-02-16 00:29:54 -07:00
parent b75fba72d8
commit 6464c88483
6 changed files with 331 additions and 4 deletions

View File

@@ -451,10 +451,21 @@ public:
for (const auto* a : annotations) oss << generate(a) << "\n";
if (cls->isAbstract) oss << "abstract ";
oss << "class " << cls->name;
if (!cls->superClass.empty()) oss << " extends " << cls->superClass;
auto bases = cls->getBases();
if (!bases.empty()) {
// First base → extends, rest → implements (Java adaptation)
oss << " extends " << bases[0].name;
if (bases.size() > 1) {
oss << " implements ";
for (size_t i = 1; i < bases.size(); ++i) {
if (i > 1) oss << ", ";
oss << bases[i].name;
}
}
}
auto interfaces = cls->getChildren("interfaces");
if (!interfaces.empty()) {
oss << " implements ";
oss << (bases.size() > 1 ? ", " : " implements ");
for (size_t i = 0; i < interfaces.size(); ++i) {
if (i > 0) oss << ", ";
oss << generate(interfaces[i]);