diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/slice2swift/Gen.cpp | 16 | ||||
-rw-r--r-- | cpp/src/slice2swift/SwiftUtil.cpp | 56 | ||||
-rw-r--r-- | cpp/src/slice2swift/SwiftUtil.h | 3 |
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, |