diff options
Diffstat (limited to 'cpp/src/slice2swift/Gen.cpp')
-rw-r--r-- | cpp/src/slice2swift/Gen.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/cpp/src/slice2swift/Gen.cpp b/cpp/src/slice2swift/Gen.cpp index 23433c3dd20..63749017723 100644 --- a/cpp/src/slice2swift/Gen.cpp +++ b/cpp/src/slice2swift/Gen.cpp @@ -302,11 +302,23 @@ Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p) const DataMemberList allMembers = p->allDataMembers(); const DataMemberList baseMembers = base ? base->allDataMembers() : DataMemberList(); + StringPairList extraParams; + if(p->isLocal()) + { + extraParams.push_back(make_pair("file", "String = #file")); + extraParams.push_back(make_pair("line", "Int = #line")); + } + bool rootClass = !base && !p->isLocal(); // bool required = writeMembers(out, members, p); - writeDefaultInitializer(out, members, p, rootClass, true); - writeMemberwiseInitializer(out, members, baseMembers, allMembers, p, rootClass); + + // Local exceptions do not need default initializers + if(!p->isLocal()) + { + writeDefaultInitializer(out, members, p, rootClass, true); + } + writeMemberwiseInitializer(out, members, baseMembers, allMembers, p, rootClass, extraParams); if(!p->isLocal()) { |