summaryrefslogtreecommitdiff
path: root/cpp/src/slice2swift/SwiftUtil.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2019-04-02 21:11:36 +0200
committerJose <jose@zeroc.com>2019-04-02 21:11:36 +0200
commitcb2a6fed1ebb9fe76248f7131578fe26b05d819d (patch)
tree88955929323ce28de141eb4dcb43f9716d47679a /cpp/src/slice2swift/SwiftUtil.cpp
parentRegenerate Xcode projects (diff)
downloadice-cb2a6fed1ebb9fe76248f7131578fe26b05d819d.tar.bz2
ice-cb2a6fed1ebb9fe76248f7131578fe26b05d819d.tar.xz
ice-cb2a6fed1ebb9fe76248f7131578fe26b05d819d.zip
Fix mapping for class proxy
Diffstat (limited to 'cpp/src/slice2swift/SwiftUtil.cpp')
-rw-r--r--cpp/src/slice2swift/SwiftUtil.cpp21
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;