diff options
author | Jose <jose@zeroc.com> | 2018-09-19 13:59:51 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2018-09-19 13:59:51 +0200 |
commit | 240e9350d8d340b8658f287939b20baa5af6388a (patch) | |
tree | db029675395ec6a42d16f7e314130d761ce85e4b /cpp/src/slice2objc | |
parent | Fix JS Ice/timeout test failure on Slow VMs (diff) | |
download | ice-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/slice2objc')
-rw-r--r-- | cpp/src/slice2objc/Gen.cpp | 3 | ||||
-rw-r--r-- | cpp/src/slice2objc/ObjCUtil.cpp | 6 |
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) { |