diff options
author | Jose <jose@zeroc.com> | 2017-02-03 18:10:20 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2017-02-03 18:10:20 +0100 |
commit | 7274ebf13c7a1ff3b587598335201c3a4e848c90 (patch) | |
tree | ad673e775b6ab68d511bcc86cf420c519b65948d /cpp/src/slice2cs | |
parent | Connection::close fixes for C#/Java/JS (diff) | |
download | ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.bz2 ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.xz ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.zip |
Rework warning suppression to use global meta data
Diffstat (limited to 'cpp/src/slice2cs')
-rw-r--r-- | cpp/src/slice2cs/CsUtil.cpp | 24 | ||||
-rw-r--r-- | cpp/src/slice2cs/CsUtil.h | 4 | ||||
-rw-r--r-- | cpp/src/slice2cs/Gen.cpp | 82 | ||||
-rw-r--r-- | cpp/src/slice2cs/Gen.h | 30 | ||||
-rw-r--r-- | cpp/src/slice2cs/Main.cpp | 6 |
5 files changed, 68 insertions, 78 deletions
diff --git a/cpp/src/slice2cs/CsUtil.cpp b/cpp/src/slice2cs/CsUtil.cpp index 5de4582dd56..dac1c6a362e 100644 --- a/cpp/src/slice2cs/CsUtil.cpp +++ b/cpp/src/slice2cs/CsUtil.cpp @@ -2335,16 +2335,12 @@ Slice::CsGenerator::toArrayAlloc(const string& decl, const string& sz) } void -Slice::CsGenerator::validateMetaData(const UnitPtr& u, int warningLevel) +Slice::CsGenerator::validateMetaData(const UnitPtr& u) { - MetaDataVisitor visitor(warningLevel); + MetaDataVisitor visitor; u->visit(&visitor, true); } -Slice::CsGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel) -{ -} - bool Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) { @@ -2352,7 +2348,6 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) // Validate global metadata in the top-level file and all included files. // StringList files = p->allFiles(); - for(StringList::iterator q = files.begin(); q != files.end(); ++q) { string file = *q; @@ -2360,7 +2355,7 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) assert(dc); StringList globalMetaData = dc->getMetaData(); StringList newGlobalMetaData; - + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); static const string csPrefix = "cs:"; static const string clrPrefix = "clr:"; @@ -2379,7 +2374,7 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) static const string csAttributePrefix = csPrefix + "attribute:"; if(s.find(csAttributePrefix) != 0 || s.size() == csAttributePrefix.size()) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, -1, "ignoring invalid global metadata `" + oldS + "'"); } @@ -2504,6 +2499,11 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) StringList localMetaData = cont->getMetaData(); StringList newLocalMetaData; + const UnitPtr unit = cont->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(cont->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::iterator p = localMetaData.begin(); p != localMetaData.end(); ++p) { string& s = *p; @@ -2547,7 +2547,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) string meta; if(cont->findMetaData(csPrefix + "generic:", meta)) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), msg + " `" + meta + "':\n" + "serialization can only be used with the array mapping for byte sequences"); @@ -2623,7 +2623,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), msg + " `" + oldS + "'"); } @@ -2638,7 +2638,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), msg + " `" + s + "'"); } diff --git a/cpp/src/slice2cs/CsUtil.h b/cpp/src/slice2cs/CsUtil.h index 1741150f100..16ebd8a3c54 100644 --- a/cpp/src/slice2cs/CsUtil.h +++ b/cpp/src/slice2cs/CsUtil.h @@ -30,7 +30,7 @@ public: // // Validate all metadata in the unit with a "cs:" prefix. // - static void validateMetaData(const UnitPtr&, int); + static void validateMetaData(const UnitPtr&); protected: @@ -65,8 +65,6 @@ private: { public: - MetaDataVisitor(int); - virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp index c1377db72cd..0008249211a 100644 --- a/cpp/src/slice2cs/Gen.cpp +++ b/cpp/src/slice2cs/Gen.cpp @@ -154,8 +154,7 @@ resultStructReturnValueName(const ParamDeclList& outParams) } -Slice::CsVisitor::CsVisitor(Output& out, int warningLevel) : - ParserVisitor(warningLevel), +Slice::CsVisitor::CsVisitor(Output& out) : _out(out) { } @@ -2021,10 +2020,9 @@ Slice::CsVisitor::writeDocCommentParam(const OperationPtr& p, ParamDir paramType } Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, - bool tie, bool impl, bool implTie, int warningLevel) : + bool tie, bool impl, bool implTie) : _includePaths(includePaths), - _tie(tie), - _warningLevel(warningLevel) + _tie(tie) { string fileBase = base; string::size_type pos = base.find_last_of("/\\"); @@ -2094,58 +2092,58 @@ Slice::Gen::~Gen() void Slice::Gen::generate(const UnitPtr& p) { - CsGenerator::validateMetaData(p, _warningLevel); + CsGenerator::validateMetaData(p); - UnitVisitor unitVisitor(_out, _warningLevel); + UnitVisitor unitVisitor(_out); p->visit(&unitVisitor, false); - CompactIdVisitor compactIdVisitor(_out, _warningLevel); + CompactIdVisitor compactIdVisitor(_out); p->visit(&compactIdVisitor, false); - TypesVisitor typesVisitor(_out, _warningLevel); + TypesVisitor typesVisitor(_out); p->visit(&typesVisitor, false); // // The async delegates are emitted before the proxy definition // because the proxy methods need to know the type. // - AsyncDelegateVisitor asyncDelegateVisitor(_out, _warningLevel); + AsyncDelegateVisitor asyncDelegateVisitor(_out); p->visit(&asyncDelegateVisitor, false); - ResultVisitor resultVisitor(_out, _warningLevel); + ResultVisitor resultVisitor(_out); p->visit(&resultVisitor, false); - ProxyVisitor proxyVisitor(_out, _warningLevel); + ProxyVisitor proxyVisitor(_out); p->visit(&proxyVisitor, false); - OpsVisitor opsVisitor(_out, _warningLevel); + OpsVisitor opsVisitor(_out); p->visit(&opsVisitor, false); - HelperVisitor helperVisitor(_out, _warningLevel); + HelperVisitor helperVisitor(_out); p->visit(&helperVisitor, false); - DispatcherVisitor dispatcherVisitor(_out, _tie, _warningLevel); + DispatcherVisitor dispatcherVisitor(_out, _tie); p->visit(&dispatcherVisitor, false); } void Slice::Gen::generateImpl(const UnitPtr& p) { - ImplVisitor implVisitor(_impl, _warningLevel); + ImplVisitor implVisitor(_impl); p->visit(&implVisitor, false); } void Slice::Gen::generateImplTie(const UnitPtr& p) { - ImplTieVisitor implTieVisitor(_impl, _warningLevel); + ImplTieVisitor implTieVisitor(_impl); p->visit(&implTieVisitor, false); } void Slice::Gen::generateChecksums(const UnitPtr& u) { - ChecksumMap map = createChecksums(u, _warningLevel); + ChecksumMap map = createChecksums(u); if(!map.empty()) { string className = "X" + generateUUID(); @@ -2214,8 +2212,8 @@ Slice::Gen::printHeader() _out << "//\n"; } -Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -2246,8 +2244,8 @@ Slice::Gen::UnitVisitor::visitUnitStart(const UnitPtr& p) return false; } -Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -2280,8 +2278,8 @@ Slice::Gen::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -3767,8 +3765,8 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, i } } -Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -3926,8 +3924,8 @@ Slice::Gen::ResultVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -4114,8 +4112,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -4171,8 +4169,8 @@ Slice::Gen::AsyncDelegateVisitor::visitOperation(const OperationPtr& p) _out << paramDeclAMI << epar << ';'; } -Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -4269,8 +4267,8 @@ Slice::Gen::OpsVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -5200,8 +5198,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) _out << eb; } -Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie, int warningLevel) : - CsVisitor(out, warningLevel), +Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie) : + CsVisitor(out), _tie(tie) { } @@ -5414,8 +5412,8 @@ Slice::Gen::DispatcherVisitor::writeTieOperations(const ClassDefPtr& p, NameSet* } } -Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -5522,8 +5520,8 @@ Slice::Gen::BaseImplVisitor::writeOperation(const OperationPtr& op, bool comment } } -Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out, int warningLevel) : - BaseImplVisitor(out, warningLevel) +Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out) : + BaseImplVisitor(out) { } @@ -5590,8 +5588,8 @@ Slice::Gen::ImplVisitor::visitClassDefEnd(const ClassDefPtr&) _out << eb; } -Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out, int warningLevel) - : BaseImplVisitor(out, warningLevel) +Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out) + : BaseImplVisitor(out) { } diff --git a/cpp/src/slice2cs/Gen.h b/cpp/src/slice2cs/Gen.h index f07bbc77cdc..d061616693d 100644 --- a/cpp/src/slice2cs/Gen.h +++ b/cpp/src/slice2cs/Gen.h @@ -20,7 +20,7 @@ class CsVisitor : public CsGenerator, public ParserVisitor { public: - CsVisitor(::IceUtilInternal::Output&, int); + CsVisitor(::IceUtilInternal::Output&); virtual ~CsVisitor(); protected: @@ -87,8 +87,7 @@ public: const std::string&, bool, bool, - bool, - int); + bool); ~Gen(); void generate(const UnitPtr&); @@ -103,7 +102,6 @@ private: IceUtilInternal::Output _impl; std::vector<std::string> _includePaths; bool _tie; - int _warningLevel; void printHeader(); @@ -111,7 +109,7 @@ private: { public: - UnitVisitor(::IceUtilInternal::Output&, int); + UnitVisitor(::IceUtilInternal::Output&); virtual bool visitUnitStart(const UnitPtr&); }; @@ -120,7 +118,7 @@ private: { public: - CompactIdVisitor(IceUtilInternal::Output&, int); + CompactIdVisitor(IceUtilInternal::Output&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -131,7 +129,7 @@ private: { public: - TypesVisitor(::IceUtilInternal::Output&, int); + TypesVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -158,7 +156,7 @@ private: { public: - AsyncDelegateVisitor(::IceUtilInternal::Output&, int); + AsyncDelegateVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -171,7 +169,7 @@ private: { public: - ResultVisitor(::IceUtilInternal::Output&, int); + ResultVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -184,7 +182,7 @@ private: { public: - ProxyVisitor(::IceUtilInternal::Output&, int); + ProxyVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -197,7 +195,7 @@ private: { public: - OpsVisitor(::IceUtilInternal::Output&, int); + OpsVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -208,7 +206,7 @@ private: { public: - HelperVisitor(::IceUtilInternal::Output&, int); + HelperVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -222,7 +220,7 @@ private: { public: - DispatcherVisitor(::IceUtilInternal::Output&, bool, int); + DispatcherVisitor(::IceUtilInternal::Output&, bool); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -241,7 +239,7 @@ private: { public: - BaseImplVisitor(::IceUtilInternal::Output&, int); + BaseImplVisitor(::IceUtilInternal::Output&); protected: @@ -252,7 +250,7 @@ private: { public: - ImplVisitor(::IceUtilInternal::Output&, int); + ImplVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -264,7 +262,7 @@ private: { public: - ImplTieVisitor(::IceUtilInternal::Output&, int); + ImplTieVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); diff --git a/cpp/src/slice2cs/Main.cpp b/cpp/src/slice2cs/Main.cpp index 31b60cee93d..21738ba6f83 100644 --- a/cpp/src/slice2cs/Main.cpp +++ b/cpp/src/slice2cs/Main.cpp @@ -82,7 +82,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -108,7 +107,6 @@ compile(const vector<string>& argv) opts.addOpt("", "ice"); opts.addOpt("", "underscore"); opts.addOpt("", "checksum"); - opts.addOpt("", "no-warn"); bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end(); vector<string> args; @@ -181,8 +179,6 @@ compile(const vector<string>& argv) bool checksum = opts.isSet("checksum"); - int warningLevel = opts.isSet("no-warn") ? 0 : 1; - if(args.empty()) { consoleErr << argv[0] << ": error: no input file" << endl; @@ -313,7 +309,7 @@ compile(const vector<string>& argv) { try { - Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie, warningLevel); + Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie); gen.generate(p); if(impl) { |