diff options
Diffstat (limited to 'cpp/src/slice2swift/SwiftUtil.cpp')
-rw-r--r-- | cpp/src/slice2swift/SwiftUtil.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/cpp/src/slice2swift/SwiftUtil.cpp b/cpp/src/slice2swift/SwiftUtil.cpp index 9d4ff3d6fde..404f76489f9 100644 --- a/cpp/src/slice2swift/SwiftUtil.cpp +++ b/cpp/src/slice2swift/SwiftUtil.cpp @@ -430,7 +430,15 @@ SwiftGenerator::typeToString(const TypePtr& type, const ContainedPtr& toplevel, } else if(prx) { - t = getUnqualified(getAbsoluteImpl(prx->_class(), "", "Prx"), currentModule); + ClassDefPtr def = prx->_class()->definition(); + if(def->isInterface() || def->allOperations().size() > 0) + { + t = getUnqualified(getAbsoluteImpl(prx->_class(), "", "Prx"), currentModule); + } + else + { + t = getUnqualified("Ice.ObjectPrx", currentModule); + } } else if(cont) { @@ -1049,7 +1057,16 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, { args += ", type: "; } - args += getUnqualified(getAbsolute(type), swiftModule) + ".self"; + + ClassDefPtr def = prx->_class()->definition(); + if(def->isInterface() || def->allOperations().size() > 0) + { + args += getUnqualified(getAbsolute(type), swiftModule) + ".self"; + } + else + { + args += getUnqualified("Ice.ObjectPrx", swiftModule) + ".self"; + } out << nl << param << " = try " << stream << ".read(" << args << ")"; } return; |