summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2018-09-19 13:59:51 +0200
committerJose <jose@zeroc.com>2018-09-19 13:59:51 +0200
commit240e9350d8d340b8658f287939b20baa5af6388a (patch)
treedb029675395ec6a42d16f7e314130d761ce85e4b /cpp/src
parentFix JS Ice/timeout test failure on Slow VMs (diff)
downloadice-240e9350d8d340b8658f287939b20baa5af6388a.tar.bz2
ice-240e9350d8d340b8658f287939b20baa5af6388a.tar.xz
ice-240e9350d8d340b8658f287939b20baa5af6388a.zip
Fix slice2objc bogus generated code for Ice::Value data member
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/slice2objc/Gen.cpp3
-rw-r--r--cpp/src/slice2objc/ObjCUtil.cpp6
2 files changed, 6 insertions, 3 deletions
diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp
index d3c0327a09e..108d4c8da1a 100644
--- a/cpp/src/slice2objc/Gen.cpp
+++ b/cpp/src/slice2objc/Gen.cpp
@@ -2559,7 +2559,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p)
TypePtr valueType = p->valueType();
BuiltinPtr valueBuiltin = BuiltinPtr::dynamicCast(valueType);
ClassDeclPtr valueClass = ClassDeclPtr::dynamicCast(valueType);
- if((valueBuiltin && valueBuiltin->kind() == Builtin::KindObject) || valueClass)
+ if((valueBuiltin && (valueBuiltin->kind() == Builtin::KindObject || valueBuiltin->kind() == Builtin::KindValue)) ||
+ valueClass)
{
_H << sp << nl << _dllExport << "@interface " << name << " : ICEObjectDictionaryHelper";
_H << nl << "@end";
diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp
index f9c9606185a..242ed701287 100644
--- a/cpp/src/slice2objc/ObjCUtil.cpp
+++ b/cpp/src/slice2objc/ObjCUtil.cpp
@@ -445,6 +445,7 @@ Slice::ObjCGenerator::isValueType(const TypePtr& type)
{
case Builtin::KindString:
case Builtin::KindObject:
+ case Builtin::KindValue:
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
{
@@ -481,7 +482,7 @@ Slice::ObjCGenerator::isClass(const TypePtr& type)
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
if(builtin)
{
- return builtin->kind() == Builtin::KindObject;
+ return builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue;
}
return ClassDeclPtr::dynamicCast(type);
}
@@ -551,6 +552,7 @@ Slice::ObjCGenerator::getBuiltinName(const BuiltinPtr& builtin)
return "String";
}
case Builtin::KindObject:
+ case Builtin::KindValue:
{
return "Object";
}
@@ -711,7 +713,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type
if(builtin)
{
string name;
- if(builtin->kind() == Builtin::KindObject)
+ if(builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue)
{
if(marshal)
{