summaryrefslogtreecommitdiff
path: root/cpp/src/slice2objc
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2017-02-01 23:16:30 +0100
committerJose <jose@zeroc.com>2017-02-01 23:16:30 +0100
commitca131951f8d81ea3da13277172a24234b5c848ea (patch)
tree28b8d9ad6a09f550ef43f3b24df8048da8e70d7d /cpp/src/slice2objc
parentAdded entries for support of try-with-resources/with statement in Java/Python (diff)
downloadice-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.cpp61
-rw-r--r--cpp/src/slice2objc/Gen.h20
-rw-r--r--cpp/src/slice2objc/Main.cpp7
-rw-r--r--cpp/src/slice2objc/ObjCUtil.cpp38
-rw-r--r--cpp/src/slice2objc/ObjCUtil.h4
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&);