diff options
author | Bernard Normier <bernard@zeroc.com> | 2017-02-04 16:48:50 -0500 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2017-02-04 16:48:50 -0500 |
commit | abb5616afdbe48c59b0f09f4b11aaa6fc5bb13be (patch) | |
tree | 900cd08e75cd11aceee75c7ab93085cbea824e60 /cpp/src/Slice/PythonUtil.cpp | |
parent | Fixed (ICE-7556) - header-ext and makefile dependencies (diff) | |
download | ice-abb5616afdbe48c59b0f09f4b11aaa6fc5bb13be.tar.bz2 ice-abb5616afdbe48c59b0f09f4b11aaa6fc5bb13be.tar.xz ice-abb5616afdbe48c59b0f09f4b11aaa6fc5bb13be.zip |
Slice compilers now emit deprecated warning for classes with operations (ICE-7557)
Refactored suppress-warning implementation
Diffstat (limited to 'cpp/src/Slice/PythonUtil.cpp')
-rw-r--r-- | cpp/src/Slice/PythonUtil.cpp | 68 |
1 files changed, 26 insertions, 42 deletions
diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp index 9f09a765ed4..f4c59dd141b 100644 --- a/cpp/src/Slice/PythonUtil.cpp +++ b/cpp/src/Slice/PythonUtil.cpp @@ -432,7 +432,7 @@ Slice::Python::CodeVisitor::visitClassDecl(const ClassDeclPtr& p) { _out << nl << "_M_" << getAbsolute(p, "_t_") << " = IcePy.declareValue('" << scoped << "')"; } - + if(!p->isLocal() && (p->isInterface() || p->definition()->allOperations().size())) { _out << nl << "_M_" << getAbsolute(p, "_t_", "Disp") << " = IcePy.declareClass('" << scoped << "')"; @@ -468,7 +468,7 @@ Slice::Python::CodeVisitor::writeOperations(const ClassDefPtr& p) _out << ", " << fixIdent((*pli)->name()); } } - + if(!p->isLocal()) { const string currentParamName = getEscapedParamName(*oli, "current"); @@ -529,7 +529,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) string prxType = getAbsolute(p, "_t_", "Prx"); ClassList bases = p->bases(); ClassDefPtr base; - + if(!bases.empty() && !bases.front()->isInterface()) { base = bases.front(); @@ -622,7 +622,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) } } _out.dec(); - + if(!isLocal) { // @@ -646,7 +646,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) { writeOperations(p); } - + // // __str__ // @@ -657,7 +657,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) _out << sp << nl << "__repr__ = __str__"; _out.dec(); - + if(_classHistory.count(scoped) == 0 && p->canBeCyclic()) { // @@ -724,9 +724,9 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) } _out << "))"; _out << nl << valueName << "._ice_type = _M_" << type; - + registerName(valueName); - + _out.dec(); } else if(!isLocal && isInterface) @@ -744,7 +744,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) // Define the proxy class _out << nl << "_M_" << prxAbs << " = Ice.createTempClass()"; _out << nl << "class " << prxName << '('; - + { vector<string> baseClasses; for(ClassList::const_iterator q = bases.begin(); q != bases.end(); ++q) @@ -755,7 +755,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) baseClasses.push_back(getSymbol(*q, "", "Prx")); } } - + if(baseClasses.empty()) { _out << "Ice.ObjectPrx"; @@ -766,7 +766,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) while(q != baseClasses.end()) { _out << *q; - + if(++q != baseClasses.end()) { _out << ", "; @@ -776,7 +776,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) } _out << "):"; _out.inc(); - + OperationList ops = p->operations(); for(OperationList::iterator oli = ops.begin(); oli != ops.end(); ++oli) { @@ -887,7 +887,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) _out.dec(); _out.dec(); // end prx class - + _out << nl << "_M_" << prxType << " = IcePy.defineProxy('" << scoped << "', " << prxName << ")"; registerName(prxName); @@ -905,7 +905,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) baseClasses.push_back(getSymbol(*q, "_", "Disp")); } } - + if(baseClasses.empty()) { _out << "Ice.Object"; @@ -916,7 +916,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) while(q != baseClasses.end()) { _out << *q; - + if(++q != baseClasses.end()) { _out << ", "; @@ -927,7 +927,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) _out << "):"; _out.inc(); - + // // ice_ids // @@ -970,9 +970,9 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) _out.inc(); _out << nl << "return '" << scoped << "'"; _out.dec(); - + writeOperations(p); - + // // __str__ // @@ -983,7 +983,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) _out << sp << nl << "__repr__ = __str__"; _out.dec(); - + _out << sp << nl << "_M_" << classType << " = IcePy.defineClass('" << scoped << "', " << className << ", "; writeMetaData(p->getMetaData()); @@ -1019,8 +1019,8 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) } _out << "))"; _out << nl << className << "._ice_type = _M_" << classType; - - + + // // Define each operation. The arguments to the IcePy.Operation constructor are: // @@ -2996,7 +2996,6 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p) string file = *q; DefinitionContextPtr dc = p->findDefinitionContext(file); assert(dc); - bool emitWarnings = !dc->suppressWarning("invalid-metadata"); StringList globalMetaData = dc->getMetaData(); for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end();) { @@ -3009,10 +3008,7 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p) continue; } - if(emitWarnings) - { - emitWarning(file, "", "ignoring invalid global metadata `" + s + "'"); - } + dc->warning(InvalidMetaData, file, "", "ignoring invalid global metadata `" + s + "'"); globalMetaData.remove(s); } } @@ -3088,7 +3084,6 @@ Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p) const UnitPtr unit = p->unit(); const DefinitionContextPtr dc = unit->findDefinitionContext(file); assert(dc); - bool emitWarnings = !dc->suppressWarning("invalid-metadata"); for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ) { @@ -3102,11 +3097,8 @@ Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p) BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); if(!builtin || builtin->kind() != Builtin::KindByte) { - if(emitWarnings) - { - emitWarning(file, line, "ignoring invalid metadata `" + s + ": " + - "`protobuf' encoding must be a byte sequence"); - } + dc->warning(InvalidMetaData, file, line, "ignoring invalid metadata `" + s + ": " + + "`protobuf' encoding must be a byte sequence"); } else { @@ -3145,7 +3137,6 @@ Slice::Python::MetaDataVisitor::validateSequence(const string& file, const strin const UnitPtr unit = type->unit(); const DefinitionContextPtr dc = unit->findDefinitionContext(file); assert(dc); - bool emitWarnings = !dc->suppressWarning("invalid-metadata"); static const string prefix = "python:"; StringList newMetaData = metaData; @@ -3167,10 +3158,7 @@ Slice::Python::MetaDataVisitor::validateSequence(const string& file, const strin } } } - if(emitWarnings) - { - emitWarning(file, line, "ignoring invalid metadata `" + s + "'"); - } + dc->warning(InvalidMetaData, file, line, "ignoring invalid metadata `" + s + "'"); newMetaData.remove(s); } } @@ -3186,17 +3174,13 @@ Slice::Python::MetaDataVisitor::reject(const ContainedPtr& cont) const UnitPtr unit = cont->unit(); const DefinitionContextPtr dc = unit->findDefinitionContext(cont->file()); assert(dc); - bool emitWarnings = !dc->suppressWarning("invalid-metadata"); for(StringList::const_iterator p = localMetaData.begin(); p != localMetaData.end();) { string s = *p++; if(s.find(prefix) == 0) { - if(emitWarnings) - { - emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'"); - } + dc->warning(InvalidMetaData, cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'"); localMetaData.remove(s); } } |