summaryrefslogtreecommitdiff
path: root/cpp/src/slice2swift/Gen.cpp
diff options
context:
space:
mode:
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;