diff options
author | Jose <jose@zeroc.com> | 2018-06-08 19:38:30 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2018-06-08 19:38:30 +0200 |
commit | 7b8b81e6bd765885e2d49c86cd8d9d3340394594 (patch) | |
tree | 5d90a0965cc745bd529223c6881f402cf03fc8e4 /cpp/src/slice2js | |
parent | IceGridGUI: improvement session lost message (diff) | |
download | ice-7b8b81e6bd765885e2d49c86cd8d9d3340394594.tar.bz2 ice-7b8b81e6bd765885e2d49c86cd8d9d3340394594.tar.xz ice-7b8b81e6bd765885e2d49c86cd8d9d3340394594.zip |
JavaScript stream interface fixes
Fixes #98
Fixes #92
Diffstat (limited to 'cpp/src/slice2js')
-rw-r--r-- | cpp/src/slice2js/Gen.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp index 01e0ae83c16..804e3d5ee32 100644 --- a/cpp/src/slice2js/Gen.cpp +++ b/cpp/src/slice2js/Gen.cpp @@ -1424,7 +1424,11 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p) << "\"" << getHelper(type) << "\"" << ", " << (fixed ? "true" : "false"); if(isClassType(type)) { - _out<< ", \"" << typeToString(type) << "\""; + bool interface = + ClassDeclPtr::dynamicCast(type) && + ClassDeclPtr::dynamicCast(type)->definition() && + ClassDeclPtr::dynamicCast(type)->definition()->isInterface(); + _out<< ", \"" << (interface ? "Ice.Value" : typeToString(type)) << "\""; } _out << ");"; } @@ -1692,10 +1696,15 @@ Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) const string propertyName = name + "Helper"; bool fixed = !keyType->isVariableLength() && !valueType->isVariableLength(); + bool interface = + ClassDeclPtr::dynamicCast(valueType) && + ClassDeclPtr::dynamicCast(valueType)->definition() && + ClassDeclPtr::dynamicCast(valueType)->definition()->isInterface(); + _out << sp; _out << nl << "Slice.defineDictionary(" << scope << ", \"" << name << "\", \"" << propertyName << "\", " << "\"" << getHelper(keyType) << "\", " - << "\"" << getHelper(valueType) << "\", " + << "\"" << (interface ? "Ice.Value" : getHelper(valueType)) << "\", " << (fixed ? "true" : "false") << ", " << (keyUseEquals ? "Ice.HashMap.compareEquals" : "undefined"); |