diff options
author | Benoit Foucher <benoit@zeroc.com> | 2015-02-20 14:27:41 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2015-02-20 14:27:41 +0100 |
commit | af1544e7b81e8708c5fdee05a59328558a3030fe (patch) | |
tree | 0933eb39159b8cf714aab7fe5901d0515674d7c6 /cpp/src/Slice/PythonUtil.cpp | |
parent | Simplification to Atomic usage (diff) | |
download | ice-af1544e7b81e8708c5fdee05a59328558a3030fe.tar.bz2 ice-af1544e7b81e8708c5fdee05a59328558a3030fe.tar.xz ice-af1544e7b81e8708c5fdee05a59328558a3030fe.zip |
Fix for ICE-6268, initialize enum, string and structs in Java/C#/Objective-C/JavaScript
Diffstat (limited to 'cpp/src/Slice/PythonUtil.cpp')
-rw-r--r-- | cpp/src/Slice/PythonUtil.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp index cefa4d31a6d..adeffc18a40 100644 --- a/cpp/src/Slice/PythonUtil.cpp +++ b/cpp/src/Slice/PythonUtil.cpp @@ -121,7 +121,7 @@ private: // // Write an initializer value for a given type. // - void writeInitializer(const TypePtr&); + void writeInitializer(const DataMemberPtr&); // // Add a value to a hash code. @@ -1674,8 +1674,9 @@ Slice::Python::CodeVisitor::writeType(const TypePtr& p) } void -Slice::Python::CodeVisitor::writeInitializer(const TypePtr& p) +Slice::Python::CodeVisitor::writeInitializer(const DataMemberPtr& m) { + TypePtr p = m->type(); BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); if(builtin) { @@ -1988,7 +1989,7 @@ Slice::Python::CodeVisitor::writeConstructorParams(const MemberInfoList& members } else { - writeInitializer(member->type()); + writeInitializer(member); } } } @@ -2450,15 +2451,16 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p) string s = *r; if(_history.count(s) == 0) { + _history.insert(s); if(s.find(prefix) == 0) { static const string packagePrefix = "python:package:"; - if(s.find(packagePrefix) != 0 || s.size() == packagePrefix.size()) + if(s.find(packagePrefix) == 0 && s.size() > packagePrefix.size()) { - emitWarning(file, "", "ignoring invalid global metadata `" + s + "'"); + continue; } + emitWarning(file, "", "ignoring invalid global metadata `" + s + "'"); } - _history.insert(s); } } } @@ -2601,9 +2603,7 @@ void Slice::Python::MetaDataVisitor::reject(const ContainedPtr& cont) { StringList localMetaData = cont->getMetaData(); - static const string prefix = "python:"; - for(StringList::const_iterator p = localMetaData.begin(); p != localMetaData.end(); ++p) { if(p->find(prefix) == 0) |