summaryrefslogtreecommitdiff
path: root/cpp/src/slice2swift/Gen.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2019-04-24 10:49:46 -0400
committerBernard Normier <bernard@zeroc.com>2019-04-24 10:49:46 -0400
commit7ffad1d6814c163ce2bc5e7e1050c2c2f0ab5382 (patch)
tree3d8839e365679a9b48c9797bc37ebc5e3741664f /cpp/src/slice2swift/Gen.cpp
parentFixed keyword escaping (diff)
downloadice-7ffad1d6814c163ce2bc5e7e1050c2c2f0ab5382.tar.bz2
ice-7ffad1d6814c163ce2bc5e7e1050c2c2f0ab5382.tar.xz
ice-7ffad1d6814c163ce2bc5e7e1050c2c2f0ab5382.zip
Reduced generated initializers
Diffstat (limited to 'cpp/src/slice2swift/Gen.cpp')
-rw-r--r--cpp/src/slice2swift/Gen.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/cpp/src/slice2swift/Gen.cpp b/cpp/src/slice2swift/Gen.cpp
index 29891997277..56f69def016 100644
--- a/cpp/src/slice2swift/Gen.cpp
+++ b/cpp/src/slice2swift/Gen.cpp
@@ -327,7 +327,7 @@ Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p)
const string prefix = getClassResolverPrefix(p->unit());
//
- // For each UserException class we generate a extension in ClassResolver
+ // For each UserException class we generate an extension in ClassResolver
//
ostringstream factory;
factory << prefix;
@@ -399,11 +399,10 @@ Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p)
out << nl << "var _slicedData: Ice.SlicedData?";
}
- // Local exceptions do not need default initializers
bool rootClass = !base && !p->isLocal();
- if(!p->isLocal())
+ if(rootClass || !members.empty())
{
- writeDefaultInitializer(out, members, p, rootClass, true);
+ writeDefaultInitializer(out, true, rootClass);
}
writeMemberwiseInitializer(out, members, baseMembers, allMembers, p, rootClass, extraParams);
@@ -514,7 +513,7 @@ Gen::TypesVisitor::visitStructStart(const StructPtr& p)
out << sb;
writeMembers(out, members, p);
- writeDefaultInitializer(out, members, p);
+ writeDefaultInitializer(out, false, true);
writeMemberwiseInitializer(out, members, p);
out << eb << nl;
@@ -1166,8 +1165,11 @@ Gen::ValueVisitor::visitClassDefStart(const ClassDefPtr& p)
out << nl << "var _slicedData: " << getUnqualified("Ice.SlicedData?", swiftModule);
}
- writeDefaultInitializer(out, members, p, !base, true);
- writeMemberwiseInitializer(out, members, baseMembers, allMembers, p, base == 0);
+ if(!base || !members.empty())
+ {
+ writeDefaultInitializer(out, true, !base);
+ }
+ writeMemberwiseInitializer(out, members, baseMembers, allMembers, p, !base);
out << sp;
out << nl << "open override func ice_id() -> Swift.String" << sb;