diff options
author | Jose <jose@zeroc.com> | 2017-02-01 23:16:30 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2017-02-01 23:16:30 +0100 |
commit | ca131951f8d81ea3da13277172a24234b5c848ea (patch) | |
tree | 28b8d9ad6a09f550ef43f3b24df8048da8e70d7d /cpp/src/slice2objc | |
parent | Added entries for support of try-with-resources/with statement in Java/Python (diff) | |
download | ice-ca131951f8d81ea3da13277172a24234b5c848ea.tar.bz2 ice-ca131951f8d81ea3da13277172a24234b5c848ea.tar.xz ice-ca131951f8d81ea3da13277172a24234b5c848ea.zip |
Add --no-warn option to Slice compilers
Diffstat (limited to 'cpp/src/slice2objc')
-rw-r--r-- | cpp/src/slice2objc/Gen.cpp | 61 | ||||
-rw-r--r-- | cpp/src/slice2objc/Gen.h | 20 | ||||
-rw-r--r-- | cpp/src/slice2objc/Main.cpp | 7 | ||||
-rw-r--r-- | cpp/src/slice2objc/ObjCUtil.cpp | 38 | ||||
-rw-r--r-- | cpp/src/slice2objc/ObjCUtil.h | 4 |
5 files changed, 76 insertions, 54 deletions
diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp index 8b927cc9830..cc7b718c7e3 100644 --- a/cpp/src/slice2objc/Gen.cpp +++ b/cpp/src/slice2objc/Gen.cpp @@ -133,7 +133,11 @@ public: } -Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport) : _H(h), _M(m), _dllExport(dllExport) +Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport, int warningLevel) : + ParserVisitor(warningLevel), + _H(h), + _M(m), + _dllExport(dllExport) { } @@ -654,11 +658,12 @@ Slice::ObjCVisitor::getServerArgs(const OperationPtr& op) const } Slice::Gen::Gen(const string& name, const string& base, const string& include, const vector<string>& includePaths, - const string& dir, const string& dllExport) - : _base(base), - _include(include), - _includePaths(includePaths), - _dllExport(dllExport) + const string& dir, const string& dllExport, int warningLevel) : + _base(base), + _include(include), + _includePaths(includePaths), + _dllExport(dllExport), + _warningLevel(warningLevel) { for(vector<string>::iterator p = _includePaths.begin(); p != _includePaths.end(); ++p) { @@ -729,7 +734,7 @@ Slice::Gen::operator!() const void Slice::Gen::generate(const UnitPtr& p) { - ObjCGenerator::validateMetaData(p); + ObjCGenerator::validateMetaData(p, _warningLevel); // // Give precedence to --dll-export command-line option @@ -829,25 +834,25 @@ Slice::Gen::generate(const UnitPtr& p) _M << nl << "# pragma clang diagnostic ignored \"-Wshadow-ivar\""; _M << nl << "#endif"; - UnitVisitor unitVisitor(_H, _M, _dllExport); + UnitVisitor unitVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&unitVisitor, false); - ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport); + ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&objectDeclVisitor, false); - ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport); + ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&proxyDeclVisitor, false); - TypesVisitor typesVisitor(_H, _M, _dllExport); + TypesVisitor typesVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&typesVisitor, false); - ProxyVisitor proxyVisitor(_H, _M, _dllExport); + ProxyVisitor proxyVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&proxyVisitor, false); - DelegateMVisitor delegateMVisitor(_H, _M, _dllExport); + DelegateMVisitor delegateMVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&delegateMVisitor, false); - HelperVisitor HelperVisitor(_H, _M, _dllExport); + HelperVisitor HelperVisitor(_H, _M, _dllExport, _warningLevel); p->visit(&HelperVisitor, false); } @@ -876,8 +881,8 @@ Slice::Gen::printHeader(Output& o) o << "\n// Ice version " << ICE_STRING_VERSION; } -Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport) : - ObjCVisitor(H, M, dllExport) +Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) : + ObjCVisitor(H, M, dllExport, warningLevel) { } @@ -918,8 +923,8 @@ Slice::Gen::UnitVisitor::visitUnitEnd(const UnitPtr& unit) } } -Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport) - : ObjCVisitor(H, M, dllExport) +Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) + : ObjCVisitor(H, M, dllExport, warningLevel) { } @@ -939,8 +944,8 @@ Slice::Gen::ObjectDeclVisitor::visitClassDecl(const ClassDeclPtr& p) _H << nl << "@protocol " << fixName(p) << ";"; } -Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport) - : ObjCVisitor(H, M, dllExport) +Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) + : ObjCVisitor(H, M, dllExport, warningLevel) { } @@ -954,8 +959,8 @@ Slice::Gen::ProxyDeclVisitor::visitClassDecl(const ClassDeclPtr& p) } } -Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport) - : ObjCVisitor(H, M, dllExport) +Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) + : ObjCVisitor(H, M, dllExport, warningLevel) { } @@ -2216,8 +2221,8 @@ Slice::Gen::TypesVisitor::writeMemberUnmarshal(const DataMemberList& dataMembers } } -Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport) - : ObjCVisitor(H, M, dllExport) +Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) + : ObjCVisitor(H, M, dllExport, warningLevel) { } @@ -2335,8 +2340,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) _H << " response" << responseExceptionSentDecl << deprecateSymbol << ";"; } -Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport) : - ObjCVisitor(H, M, dllExport) +Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) : + ObjCVisitor(H, M, dllExport, warningLevel) { } @@ -2638,8 +2643,8 @@ Slice::Gen::HelperVisitor::visitStructStart(const StructPtr& p) return false; } -Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport) - : ObjCVisitor(H, M, dllExport) +Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) + : ObjCVisitor(H, M, dllExport, warningLevel) { } diff --git a/cpp/src/slice2objc/Gen.h b/cpp/src/slice2objc/Gen.h index 0c9ef639e7d..6b6c4c99b10 100644 --- a/cpp/src/slice2objc/Gen.h +++ b/cpp/src/slice2objc/Gen.h @@ -20,7 +20,7 @@ class ObjCVisitor : public ObjCGenerator, public ParserVisitor { public: - ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual ~ObjCVisitor(); protected: @@ -54,7 +54,8 @@ public: const std::string&, const std::vector<std::string>&, const std::string&, - const std::string&); + const std::string&, + int); ~Gen(); bool operator!() const; // Returns true if there was a constructor error @@ -71,6 +72,7 @@ private: std::string _include; std::vector<std::string> _includePaths; std::string _dllExport; + int _warningLevel; void printHeader(::IceUtilInternal::Output&); @@ -78,7 +80,7 @@ private: { public: - UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual bool visitModuleStart(const ModulePtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -92,7 +94,7 @@ private: { public: - ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual void visitClassDecl(const ClassDeclPtr&); }; @@ -101,7 +103,7 @@ private: { public: - ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual void visitClassDecl(const ClassDeclPtr&); }; @@ -110,7 +112,7 @@ private: { public: - TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -156,7 +158,7 @@ private: { public: - ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); @@ -167,7 +169,7 @@ private: { public: - HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitEnum(const EnumPtr&); @@ -180,7 +182,7 @@ private: { public: - DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); + DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); diff --git a/cpp/src/slice2objc/Main.cpp b/cpp/src/slice2objc/Main.cpp index 24ac096d92c..7877c072ca0 100644 --- a/cpp/src/slice2objc/Main.cpp +++ b/cpp/src/slice2objc/Main.cpp @@ -80,6 +80,7 @@ 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" ; // Note: --case-sensitive is intentionally not shown here! } @@ -105,6 +106,7 @@ compile(const vector<string>& argv) opts.addOpt("", "ice"); opts.addOpt("", "underscore"); opts.addOpt("", "case-sensitive"); + opts.addOpt("", "no-warn"); bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end(); @@ -173,6 +175,8 @@ compile(const vector<string>& argv) bool underscore = opts.isSet("underscore"); + int warningLevel = opts.isSet("no-warn") ? 0 : 1; + if(args.empty()) { consoleErr << argv[0] << ": no input file" << endl; @@ -285,7 +289,8 @@ compile(const vector<string>& argv) { try { - Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport); + Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport, + warningLevel); if(!gen) { u->destroy(); diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp index 1087a9a5bfc..ad2787308bc 100644 --- a/cpp/src/slice2objc/ObjCUtil.cpp +++ b/cpp/src/slice2objc/ObjCUtil.cpp @@ -1043,16 +1043,17 @@ Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypeP } void -Slice::ObjCGenerator::validateMetaData(const UnitPtr& u) +Slice::ObjCGenerator::validateMetaData(const UnitPtr& u, int warningLevel) { - MetaDataVisitor visitor; + MetaDataVisitor visitor(warningLevel); u->visit(&visitor, true); } const string Slice::ObjCGenerator::MetaDataVisitor::_objcPrefix = "objc:"; const string Slice::ObjCGenerator::MetaDataVisitor::_msg = "ignoring invalid metadata"; -Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor() +Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) : + ParserVisitor(warningLevel) { } @@ -1085,10 +1086,13 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) headerDir++; if(headerDir > 1) { - ostringstream ostr; - ostr << "ignoring invalid global metadata `" << s - << "': directive can appear only once per file"; - emitWarning(file, -1, ostr.str()); + if(warningLevel() > 0) + { + ostringstream ostr; + ostr << "ignoring invalid global metadata `" << s + << "': directive can appear only once per file"; + emitWarning(file, -1, ostr.str()); + } globalMetaData.remove(s); } continue; @@ -1098,17 +1102,23 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) dllExport++; if(dllExport > 1) { - ostringstream ostr; - ostr << "ignoring invalid global metadata `" << s - << "': directive can appear only once per file"; - emitWarning(file, -1, ostr.str()); + if(warningLevel() > 0) + { + ostringstream ostr; + ostr << "ignoring invalid global metadata `" << s + << "': directive can appear only once per file"; + emitWarning(file, -1, ostr.str()); + } globalMetaData.remove(s); } continue; } - ostringstream ostr; - ostr << "ignoring invalid global metadata `" << s << "'"; - emitWarning(file, -1, ostr.str()); + if(warningLevel() > 0) + { + ostringstream ostr; + ostr << "ignoring invalid global metadata `" << s << "'"; + emitWarning(file, -1, ostr.str()); + } globalMetaData.remove(s); } } diff --git a/cpp/src/slice2objc/ObjCUtil.h b/cpp/src/slice2objc/ObjCUtil.h index 83f516f3027..11e4cece024 100644 --- a/cpp/src/slice2objc/ObjCUtil.h +++ b/cpp/src/slice2objc/ObjCUtil.h @@ -32,7 +32,7 @@ public: // // Validate all metadata in the unit with an "objc:" prefix. // - static void validateMetaData(const UnitPtr&); + static void validateMetaData(const UnitPtr&, int); protected: struct ModulePrefix @@ -81,7 +81,7 @@ private: class MetaDataVisitor : public ParserVisitor { public: - MetaDataVisitor(); + MetaDataVisitor(int); virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); |