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, 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())
{