summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/slice2cppe/Gen.cpp30
-rw-r--r--cpp/src/slice2cppe/Gen.h2
2 files changed, 17 insertions, 15 deletions
diff --git a/cpp/src/slice2cppe/Gen.cpp b/cpp/src/slice2cppe/Gen.cpp
index c471741344f..8201a7de632 100644
--- a/cpp/src/slice2cppe/Gen.cpp
+++ b/cpp/src/slice2cppe/Gen.cpp
@@ -2375,7 +2375,7 @@ Slice::Gen::ObjectVisitor::visitDataMember(const DataMemberPtr& p)
}
bool
-Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p, bool first)
+Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p)
{
DataMemberList allDataMembers = p->allDataMembers();
if(allDataMembers.empty())
@@ -2383,9 +2383,13 @@ Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p, boo
return false;
}
- if(!first)
+ ClassList bases = p->bases();
+ if(!bases.empty() && !bases.front()->isInterface())
{
- C << ",";
+ if(emitVirtualBaseInitializers(bases.front()))
+ {
+ C << ',';
+ }
}
string upcall = "(";
@@ -2402,13 +2406,6 @@ Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p, boo
C << nl << fixKwd(p->name()) << upcall;
- ClassList bases = p->bases();
- ClassDefPtr base;
- if(!bases.empty() && !bases.front()->isInterface())
- {
- emitVirtualBaseInitializers(bases.front(), false);
- }
-
return true;
}
@@ -2437,14 +2434,19 @@ Slice::Gen::ObjectVisitor::emitOneShotConstructor(const ClassDefPtr& p)
ClassDefPtr base;
if(!bases.empty() && !bases.front()->isInterface())
{
- if(emitVirtualBaseInitializers(bases.front(), true) && !dataMembers.empty())
+ if(emitVirtualBaseInitializers(bases.front()))
{
- C << ',';
+ if(!dataMembers.empty())
+ {
+ C << ',';
+ }
}
}
- C << nl;
-
+ if(!dataMembers.empty())
+ {
+ C << nl;
+ }
for(q = dataMembers.begin(); q != dataMembers.end(); ++q)
{
if(q != dataMembers.begin())
diff --git a/cpp/src/slice2cppe/Gen.h b/cpp/src/slice2cppe/Gen.h
index 03bbfb77f09..fd57cfdf21c 100644
--- a/cpp/src/slice2cppe/Gen.h
+++ b/cpp/src/slice2cppe/Gen.h
@@ -205,7 +205,7 @@ private:
private:
- bool emitVirtualBaseInitializers(const ClassDefPtr&, bool);
+ bool emitVirtualBaseInitializers(const ClassDefPtr&);
void emitOneShotConstructor(const ClassDefPtr&);
void emitUpcall(const ClassDefPtr&, const std::string&);