summaryrefslogtreecommitdiff
path: root/cpp/src/slice2objc
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2017-02-03 18:10:20 +0100
committerJose <jose@zeroc.com>2017-02-03 18:10:20 +0100
commit7274ebf13c7a1ff3b587598335201c3a4e848c90 (patch)
treead673e775b6ab68d511bcc86cf420c519b65948d /cpp/src/slice2objc
parentConnection::close fixes for C#/Java/JS (diff)
downloadice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.bz2
ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.xz
ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.zip
Rework warning suppression to use global meta data
Diffstat (limited to 'cpp/src/slice2objc')
-rw-r--r--cpp/src/slice2objc/Gen.cpp56
-rw-r--r--cpp/src/slice2objc/Gen.h20
-rw-r--r--cpp/src/slice2objc/Main.cpp7
-rw-r--r--cpp/src/slice2objc/ObjCUtil.cpp16
-rw-r--r--cpp/src/slice2objc/ObjCUtil.h3
5 files changed, 44 insertions, 58 deletions
diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp
index cc7b718c7e3..80b5609417e 100644
--- a/cpp/src/slice2objc/Gen.cpp
+++ b/cpp/src/slice2objc/Gen.cpp
@@ -12,9 +12,9 @@
#include <limits>
#include <sys/stat.h>
#ifndef _WIN32
-#include <unistd.h>
+# include <unistd.h>
#else
-#include <direct.h>
+# include <direct.h>
#endif
#include <IceUtil/Iterator.h>
#include <IceUtil/UUID.h>
@@ -133,8 +133,7 @@ public:
}
-Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport, int warningLevel) :
- ParserVisitor(warningLevel),
+Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport) :
_H(h),
_M(m),
_dllExport(dllExport)
@@ -658,12 +657,11 @@ 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, int warningLevel) :
+ const string& dir, const string& dllExport) :
_base(base),
_include(include),
_includePaths(includePaths),
- _dllExport(dllExport),
- _warningLevel(warningLevel)
+ _dllExport(dllExport)
{
for(vector<string>::iterator p = _includePaths.begin(); p != _includePaths.end(); ++p)
{
@@ -734,7 +732,7 @@ Slice::Gen::operator!() const
void
Slice::Gen::generate(const UnitPtr& p)
{
- ObjCGenerator::validateMetaData(p, _warningLevel);
+ ObjCGenerator::validateMetaData(p);
//
// Give precedence to --dll-export command-line option
@@ -834,25 +832,25 @@ Slice::Gen::generate(const UnitPtr& p)
_M << nl << "# pragma clang diagnostic ignored \"-Wshadow-ivar\"";
_M << nl << "#endif";
- UnitVisitor unitVisitor(_H, _M, _dllExport, _warningLevel);
+ UnitVisitor unitVisitor(_H, _M, _dllExport);
p->visit(&unitVisitor, false);
- ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport, _warningLevel);
+ ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport);
p->visit(&objectDeclVisitor, false);
- ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport, _warningLevel);
+ ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport);
p->visit(&proxyDeclVisitor, false);
- TypesVisitor typesVisitor(_H, _M, _dllExport, _warningLevel);
+ TypesVisitor typesVisitor(_H, _M, _dllExport);
p->visit(&typesVisitor, false);
- ProxyVisitor proxyVisitor(_H, _M, _dllExport, _warningLevel);
+ ProxyVisitor proxyVisitor(_H, _M, _dllExport);
p->visit(&proxyVisitor, false);
- DelegateMVisitor delegateMVisitor(_H, _M, _dllExport, _warningLevel);
+ DelegateMVisitor delegateMVisitor(_H, _M, _dllExport);
p->visit(&delegateMVisitor, false);
- HelperVisitor HelperVisitor(_H, _M, _dllExport, _warningLevel);
+ HelperVisitor HelperVisitor(_H, _M, _dllExport);
p->visit(&HelperVisitor, false);
}
@@ -881,8 +879,8 @@ Slice::Gen::printHeader(Output& o)
o << "\n// Ice version " << ICE_STRING_VERSION;
}
-Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) :
- ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport) :
+ ObjCVisitor(H, M, dllExport)
{
}
@@ -923,8 +921,8 @@ Slice::Gen::UnitVisitor::visitUnitEnd(const UnitPtr& unit)
}
}
-Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
- : ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport)
+ : ObjCVisitor(H, M, dllExport)
{
}
@@ -944,8 +942,8 @@ Slice::Gen::ObjectDeclVisitor::visitClassDecl(const ClassDeclPtr& p)
_H << nl << "@protocol " << fixName(p) << ";";
}
-Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
- : ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport)
+ : ObjCVisitor(H, M, dllExport)
{
}
@@ -959,8 +957,8 @@ Slice::Gen::ProxyDeclVisitor::visitClassDecl(const ClassDeclPtr& p)
}
}
-Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
- : ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport)
+ : ObjCVisitor(H, M, dllExport)
{
}
@@ -2221,8 +2219,8 @@ Slice::Gen::TypesVisitor::writeMemberUnmarshal(const DataMemberList& dataMembers
}
}
-Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
- : ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport)
+ : ObjCVisitor(H, M, dllExport)
{
}
@@ -2340,8 +2338,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
_H << " response" << responseExceptionSentDecl << deprecateSymbol << ";";
}
-Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) :
- ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport) :
+ ObjCVisitor(H, M, dllExport)
{
}
@@ -2643,8 +2641,8 @@ Slice::Gen::HelperVisitor::visitStructStart(const StructPtr& p)
return false;
}
-Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
- : ObjCVisitor(H, M, dllExport, warningLevel)
+Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport)
+ : ObjCVisitor(H, M, dllExport)
{
}
diff --git a/cpp/src/slice2objc/Gen.h b/cpp/src/slice2objc/Gen.h
index 6b6c4c99b10..0c9ef639e7d 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&, int);
+ ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual ~ObjCVisitor();
protected:
@@ -54,8 +54,7 @@ public:
const std::string&,
const std::vector<std::string>&,
const std::string&,
- const std::string&,
- int);
+ const std::string&);
~Gen();
bool operator!() const; // Returns true if there was a constructor error
@@ -72,7 +71,6 @@ private:
std::string _include;
std::vector<std::string> _includePaths;
std::string _dllExport;
- int _warningLevel;
void printHeader(::IceUtilInternal::Output&);
@@ -80,7 +78,7 @@ private:
{
public:
- UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -94,7 +92,7 @@ private:
{
public:
- ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual void visitClassDecl(const ClassDeclPtr&);
};
@@ -103,7 +101,7 @@ private:
{
public:
- ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual void visitClassDecl(const ClassDeclPtr&);
};
@@ -112,7 +110,7 @@ private:
{
public:
- TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -158,7 +156,7 @@ private:
{
public:
- ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
@@ -169,7 +167,7 @@ private:
{
public:
- HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitEnum(const EnumPtr&);
@@ -182,7 +180,7 @@ private:
{
public:
- DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
+ DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
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 7877c072ca0..24ac096d92c 100644
--- a/cpp/src/slice2objc/Main.cpp
+++ b/cpp/src/slice2objc/Main.cpp
@@ -80,7 +80,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"
;
// Note: --case-sensitive is intentionally not shown here!
}
@@ -106,7 +105,6 @@ 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();
@@ -175,8 +173,6 @@ 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;
@@ -289,8 +285,7 @@ compile(const vector<string>& argv)
{
try
{
- Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport,
- warningLevel);
+ Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport);
if(!gen)
{
u->destroy();
diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp
index ad2787308bc..e86290b8db3 100644
--- a/cpp/src/slice2objc/ObjCUtil.cpp
+++ b/cpp/src/slice2objc/ObjCUtil.cpp
@@ -1043,20 +1043,15 @@ Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypeP
}
void
-Slice::ObjCGenerator::validateMetaData(const UnitPtr& u, int warningLevel)
+Slice::ObjCGenerator::validateMetaData(const UnitPtr& u)
{
- MetaDataVisitor visitor(warningLevel);
+ MetaDataVisitor visitor;
u->visit(&visitor, true);
}
const string Slice::ObjCGenerator::MetaDataVisitor::_objcPrefix = "objc:";
const string Slice::ObjCGenerator::MetaDataVisitor::_msg = "ignoring invalid metadata";
-Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) :
- ParserVisitor(warningLevel)
-{
-}
-
bool
Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
@@ -1071,6 +1066,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
DefinitionContextPtr dc = p->findDefinitionContext(file);
assert(dc);
StringList globalMetaData = dc->getMetaData();
+ bool emitWarnings = dc->suppressWarning("invalid-metadata");
int headerDir = 0;
int dllExport = 0;
for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end();)
@@ -1086,7 +1082,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
headerDir++;
if(headerDir > 1)
{
- if(warningLevel() > 0)
+ if(emitWarnings)
{
ostringstream ostr;
ostr << "ignoring invalid global metadata `" << s
@@ -1102,7 +1098,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
dllExport++;
if(dllExport > 1)
{
- if(warningLevel() > 0)
+ if(emitWarnings)
{
ostringstream ostr;
ostr << "ignoring invalid global metadata `" << s
@@ -1113,7 +1109,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
}
continue;
}
- if(warningLevel() > 0)
+ if(emitWarnings)
{
ostringstream ostr;
ostr << "ignoring invalid global metadata `" << s << "'";
diff --git a/cpp/src/slice2objc/ObjCUtil.h b/cpp/src/slice2objc/ObjCUtil.h
index 11e4cece024..cf5f1ee0b46 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&, int);
+ static void validateMetaData(const UnitPtr&);
protected:
struct ModulePrefix
@@ -81,7 +81,6 @@ private:
class MetaDataVisitor : public ParserVisitor
{
public:
- MetaDataVisitor(int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);