summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/slice2swift/Gen.cpp16
-rw-r--r--cpp/src/slice2swift/SwiftUtil.cpp56
-rw-r--r--cpp/src/slice2swift/SwiftUtil.h3
3 files changed, 33 insertions, 42 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;
diff --git a/cpp/src/slice2swift/SwiftUtil.cpp b/cpp/src/slice2swift/SwiftUtil.cpp
index 9b1ca4bc06a..b607750b81d 100644
--- a/cpp/src/slice2swift/SwiftUtil.cpp
+++ b/cpp/src/slice2swift/SwiftUtil.cpp
@@ -753,32 +753,27 @@ SwiftGenerator::containsClassMembers(const StructPtr& s)
void
SwiftGenerator::writeDefaultInitializer(IceUtilInternal::Output& out,
- const DataMemberList&,
- const ContainedPtr&,
- bool rootClass,
- bool required)
-{
- out << sp;
- out << nl << "public ";
- if(required)
- {
- out << "required ";
- }
- else if(!rootClass)
- {
- out << "override ";
- }
-
- if(rootClass)
- {
- out << "init() {}";
- }
- else
- {
- out << "init()" << sb;
- out << nl << "super.init()";
- out << eb;
- }
+ bool required,
+ bool rootClass)
+{
+ out << sp;
+ out << nl << "public ";
+ if(required)
+ {
+ out << "required ";
+ }
+ if(rootClass)
+ {
+ out << "init() {}";
+ }
+ else
+ {
+ assert(required);
+ out << "init()";
+ out << sb;
+ out << "super.init()";
+ out << eb;
+ }
}
void
@@ -798,16 +793,11 @@ SwiftGenerator::writeMemberwiseInitializer(IceUtilInternal::Output& out,
bool rootClass,
const StringPairList& extraParams)
{
- if(allMembers.size() > 0)
+ if(!members.empty())
{
out << sp;
out << nl;
- out << "public ";
- if(members.size() == 0)
- {
- out << "override ";
- }
- out << "init" << spar;
+ out << "public init" << spar;
for(DataMemberList::const_iterator i = allMembers.begin(); i != allMembers.end(); ++i)
{
DataMemberPtr m = *i;
diff --git a/cpp/src/slice2swift/SwiftUtil.h b/cpp/src/slice2swift/SwiftUtil.h
index de6ce5e87df..e9fe8eca1a6 100644
--- a/cpp/src/slice2swift/SwiftUtil.h
+++ b/cpp/src/slice2swift/SwiftUtil.h
@@ -89,8 +89,7 @@ protected:
std::string getValue(const std::string&, const TypePtr&);
void writeConstantValue(IceUtilInternal::Output& out, const TypePtr&, const SyntaxTreeBasePtr&,
const std::string&, const StringList&, const std::string&, bool optional = false);
- void writeDefaultInitializer(IceUtilInternal::Output&, const DataMemberList&, const ContainedPtr&, bool = true,
- bool = false);
+ void writeDefaultInitializer(IceUtilInternal::Output&, bool, bool);
void writeMemberwiseInitializer(IceUtilInternal::Output&, const DataMemberList&, const ContainedPtr&);
void writeMemberwiseInitializer(IceUtilInternal::Output&, const DataMemberList&, const DataMemberList&,
const DataMemberList&, const ContainedPtr&, bool rootClass = false,